背景
突然间你会发现,做了无数的项目,大部分都是重复的工作,每次新项目、新公司都需要重新搞,没有多少实际的沉淀和积累。将工作中比较重要的东西以组件化的方式发布到npm私有仓库,或许是一个不错的方式!!!
概括
搭建NPM私有仓库主流的有两种:
按照下面的流程半小时搞定,都是非常成熟的工具没啥技术含量,但是要多看官网教程,少看网上资料~~
verdaccio + docker 搭建私有仓库
- docker pull verdaccio/verdaccio:4
- 新建verdaccio文件夹,并在目录中新建 verdaccio/docker-compose.yaml,并配置信息:
version: '3.1'
services:
verdaccio:
image: verdaccio/verdaccio
container_name: "verdaccio"
networks:
- node-network
environment:
- VERDACCIO_PORT=4873
ports:
- "4873:4873"
volumes:
- "./storage:/verdaccio/storage"
- "./config:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
networks:
node-network:
driver: bridge
-
新建verdaccio/config/config.yaml
配置参考官网:verdaccio.org/zh-CN/docs/…
配置最后添加:listen: 0.0.0.0:4873
-
在新建config中新建verdaccio/config/htpasswd文件(不是文件夹, 账号密码存放的地方)、verdaccio/config/storage,必须有读写权限,否则npm adduser报500;
-
启动 verdaccio
docker-compose up -d --build
- (可忽略)账号配置,使用htpasswd-for-sinopia生成账号密码,需要提前在verdaccio下创建htpasswd文件,并在verdaccio目录下执行以下命令:
npm install htpasswd-for-sinopia -g
htpasswd # 和htpasswd文件同级目录下执行
-
本地新增账号发布(建议使用nrm),务必在本地切换源到verdaccio的地址;
遇到的问题
-
无法通过IP+端口号访问docker,查看一下安全策略;
-
npm adduser 报 500;
npm ERR! 500 Internal Server Error - PUT http://your-server-ip:4873/-/user/org.couchdb.user:admin - internal server error
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/wangyuechao/.npm/_logs/2022-01-12T13_04_49_814Z-debug.log
解决方案:给verdaccio/config/htpasswd增加读写权限!
- 以下是工程的目录结构。
目录结构:
- verdaccio
- config
- htpasswd
- storage
- docker-compose.yaml
- plugins(docker-compose up -d --build时自动生成)
- storage(docker-compose up -d --build时自动生成)