优雅的使用npm私服

在讲正题之前,先说一下maven关于依赖下载相关的特性和配置。

maven从私服下载依赖,可以直接在当前项目的pom.xml文件中,添加私服仓库配置,例如:

<repositories>
    <repository>
		<id>maven-jtv-group</id>
		<url>http://localhost:9999/repository/xx-hosted</url>
	</repository>
</repositories>

这样,当前项目在现在依赖的时候,会先去私服中去找,发现没有该坐标,会自动去中央仓库http://repo1.maven.org/maven2中去找,此时我们可以再maven的config.xml中去配置中央仓库的镜像,以加快依赖下载速度。

这种使用方式很好,可以从多个源去加载依赖。

npm下载依赖,一般只能从一个registry下载。此时,如果有私有包不想发布到外网仓库,那就得借助私服。

比如nexus私服,配置完私有npm hosted后,还要配置npm proxy代理,最后使用npm group将npm hosted和npm proxy合并到一起。公网依赖包能否下载成功就完全取决于nexus服务器外网能力,且普通开发员无法调整。

如果npm下载依赖也能像maven一样,那应该会体验更好。

npm官方文档中有关于给包添加域的介绍:scope | npm Docs (npmjs.com)

可以通过给包添加域前缀,然后再指定域的registry,就可以做到分源下载。

此种方式,私服无需配置代理,无需缓存公网包,能减少私服磁盘空间。同时开发员可以自行决定本机registry配置,选择合适的仓库,提升包下载速度。

具体整改如下:

1. 给私有包添加域,即给package.json中的包名name添加域前缀,如下:

{
  "name": "@xx/demo",
  "version": "0.0.1",
  "description": "Demo",
  "license": "UNLICENSED",

  ......
}

其中@xx 即为域(scope)前缀

修改完成后,将该包发布到私服,具体步骤略过

2. 本地项目整改

项目根目录添加.npmrc文件,文件内容如下:
 

@xx:registry=http://127.0.0.1:9999/repository/hosted/

关于.npmrc文件的作用及优先级关系,请各位读者自行参考资料理解。

该文件的作用是设置@xx域下的包的下载路径,待安装依赖时,以@xx/开头的包,都将从该地址下载。

其他的,还是走本机的registry

当然,本地项目里对于@xx/demo包的引用导入,也需要修改。

import demo from '@xx/demo'

import {x1,x2,...} from '@xx/demo'

以上做完后,万事大吉,尽情地享受吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值