开始之前
这里我们选取nexus作为npm私有仓库的服务。
nexus功能丰富,可以提供代理仓库、宿主仓库,除了做npm仓库,还可以做maven,pypi等仓库。
nexus - 概念
hosted:本地仓库,通常用来存放自己编写的包,我们自己发的包放这里。
proxy:代理仓库,一般用于代理远程第三方的公共仓库。
group:用于聚合管理,如果内部包括了 hosted 和 proxy。首先会从 hosted 取,若无则从 proxy 取并缓存,下次则会从缓存取。
部署
1,启动nexus服务
部署nexus,我们选取docker 在本地或云服务器上部署。
docker run -d -p 8081:8081 --name nexus -v ${your_local_data_path}/:/nexus-data sonatype/nexus3
${your_local_data_path} 换成本地的路径,比如:/Users/xx/software/nexus/data。
2,创建仓库
服务启动后访问 http://localhost:8081/#admin/repository/repositories 点击创建,然后选取npm(hosted),进行创建。
3,设置权限
3.1 创建角色
按下图依次填下,
这里我们先把权限选大一点,所有npm库的读写权限,当然你也可以根据自身需求,限制读写权限,限制特定npm库。
3.2 创建用户
角色创建好后,则可以创建一个用户,然后赋予用户角色。
按图所示依次填写,并赋予角色。
3.3 设置仓库npm权限
这里加一下关于npm的权限 ,也很简单,根据提示 把npm Bearer Token Realm
加到active
即可。
nexus官方原文:This authentication method requires the npm Bearer Token Realm. Simply add the realm to the active realms in the Realms section of the Security menu from the Administration menu to activate it as documented in Realms. (refs: https://help.sonatype.com/en/npm-security.html)
使用
发包
这里我们提前准备一个packname为@company-a/common的包(文末有对应代码 )。
发包很简单,命令如下yarn publish --registry=http://127.0.0.1:8081/repository/my-npm-repo/ --new-version 1.0.0 common
,然后输入刚刚创建的用户账号和密码。
然后进入仓库查看,嗒哒!🎉 新包上传上来了 。
引包
最后我们在试下安装下这个新包。
假设我们有个业务应用目录为app1,进入到app1目录下,修改.npmrc文件,要把@company-a的registry地址改为搭建的仓库地址 http://localhost:8081/repository/my-npm-repo/
;
cd app1 && vim .npmrc
registry=https://registry.npmjs.org
@company-a:registry=http://localhost:8081/repository/my-npm-repo/
然后执行 yarn add @company-a/common@1.0.3,如下图安装成功!
至此,搭建nexus作为npm私有库服务器,然后发包,引包的全流程演示完毕。
快速搭建一个属于团队或者自己的私有库服务,就是这么简单。祝大家都可以敏捷开发,一切顺利!
示例源码参考