介绍
搭建npm私服可以通过以下方法:
-
购买npm的官方服务,但是中国下载可能不稳定
-
用cnpmjs.org的方案搭建,需要数据库和nginx
-
Verdaccio,配置简单,但网上说适合个人用多点
-
Nexus3,搭建相较cnpmjs.org简单,还可以配置maven、docker等私服,公司用得多一点
用Docker安装Nexus(Mac环境)
#搜索镜像
docker search nexus3
#拉取镜像
docker pull docker.io/sonatype/nexus
#查看镜像
docker images
#运行容器
docker run -id --privileged=true --name=nexus3 --restart=always -p 8081:8081 -v /Users/xxx/Desktop/nexus3/nexus-data:/var/nexus-data sonatype/nexus3
# 参数说明:
# -d: 后台运行该容器# -p: 端口映射
# --name: 自定义容器名称# -v: 挂载外部数据卷
# sonatype/nexus3: 镜像名称,注意这里是nexus3
访问 http://127.0.0.1:8081
# 首次登录需要查看密码:#先查看容器id
docker ps
# 进入容器控制台
docker exec -it 容器id bash
# 进入/sonatype-work/nexus3,找到admin.password,查看密码,账号是admin
vi admin.password
# 访问 http://127.0.0.1:8081,输入admin.password的密码,登录后修改密码
配置Nexus:
- 创建空间给npm包
2. 创建仓库
创建2种npm仓库并添加到一个组里,之后使用的是这个组,这样远程拉取和本地上传的包都在这个组里可以看到新增仓库主要建这3种:
hosted(本地存储)
proxy(提供代理其他仓库)
group(组合多个仓库为一个地址)
新建hosted类型仓库,部署策略需要选择允许重新部署。因为我们会经常更新包
新建proxy类型仓库,远程仓库地址填 registry.npmjs.org 或者淘宝镜像地址都可以
空间还是选择刚刚创建的npm-hub
新建group类型仓库,选择刚刚创建的两个仓库
- 创建角色和用户
创建角色,应该只分配npm对应的权限就好,没有细测,分了全部
*如果上传npm包有问题,admin分给这个角色
创建用户,把刚刚的角色分给用户,id和密码会用来上传npm包
- 安全设置
选中npm Bearer Token
测试上传包和下载包
查看group-npm的地址
测试下载npm包:本地可以安装nrm来切换npm源
npm install -g nrm
#查看本地的npm源
nrm ls
#添加nexus的npm源
nrm add testnpm http://xxxx/repository/group-npm
#使用刚刚加入的npm源
nrm use testnpm
新建一个文件夹,最好是建个新的文件夹用新项目去测试,执行命令
npm init
npm install --save react
查看nexus是不是多了相关包,是的话拉取包成功
测试上传npm包,在browse中查看是否有新上传的包
# 登录
npm login --registry=http://xxx/repository/local-npm/
#新建文件夹,package.json定义好name
npm init
#进入文件夹提交
npm publish --registry http://xxx/repository/local-npm/
ps. 上传npm包需要指定到local-npm,不然会提示license有问题