日常工作中,我们除了用已有的npm包之外,有时候会开发自己的组件库或者方法库,但是公司自己的组件库一般不会将其暴露在公网上,因此我们需要使用公司内网搭建一个私有库。
使用工具:Sonatype Nexus Repository Manager
Nexus
,就是联结,联系的意思。极大地简化了自己内部仓库的维护和外部仓库的访问。
这个工具已经告诉了我们仓库的设计思路,如下图所示,在新建npm仓库的时候,有三种类型可以选择:
- hosted:本地存储,可以上传自己的项目到这里面;
- proxy:提供代理其他仓库的类型,可以把官方源或者淘宝源代理过来;
- group:组类型,它可以包含前面两个
所以我们的思路很明确:这三种仓库都使用,组件库开发人员用hosted地址进行发布,proxy自动代理线上的仓库,业务开发人员使用group的地址作为源,group来源于hosted和proxy。
配置hosted类型的仓库
因为我们要上传自己npm包到这个库中,所以需要设置这个库为Allow redeploy
;
配置proxy类型的仓库
这个类型的仓库只需要配置远程仓库的地址;
配置group类型的仓库
这个类型的仓库只需要设置来源即可,来源就是已经存在的库;
组件库开发人员的使用
对于组件库开发人员来说,要事先建一下角色和用户:
需要把源切换至hosted地址:
bash
nrm add npm-hosted http://*****/repository/npm-hosted
nrm use npm-hosted
npm login # 用户名和密码就是新建用户的时候设置的
组件库里面添加配置:
json
"publishConfig": {
"registry": "http://*****/repository/npm-hosted/"
}
然后运行npm publish
,即可完成组件库的发布。
业务开发人员的使用
对于业务开发人员来说,只需要把源切换到group地址就可以了:
bash
nrm add npm-group http://*****/repository/npm-group
nrm use npm-group
npm install 组件库