前言
公司前端项目越来越多,业务上的npm包也越来越多,所以想着自建一个npm私服使用。
技术选型
参考了很多的文章,最后决定选择 Verdaccio 来搭建npm私服,本文使用的是目前最新版本 Verdaccio 5.15
。
服务器配置
因为是在 Docker
上运行,后面需要挂载目录,所以我们得自己准备一份 config.yaml
配置文件,默认的配置文件可以从这里下载 verdaccio/docker.yaml
我在根目录创建了一个 /verdaccio
文件夹,在 /verdaccio
文件夹中分别创建 conf
、storage
、plugins
文件夹,将刚刚的 config.yaml
文件复制到 /verdaccio/conf
文件夹下。
做完上述操作后需要使用如下命令修改宿主机文件夹权限,否则在后面添加用户和上传包会提示权限问题无法写入。 参考文档 Docker | Verdaccio。
sudo chown -R 10001:65533 /verdaccio
开始安装
运行 Docker
创建命令:
docker run -itd --name verdaccio -p 4873:4873 -v /verdaccio/conf:/verdaccio/conf -v /verdaccio/storage:/verdaccio/storage -v /verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio
配置域名和证书
在使用的时候我们肯定需要使用域名来访问的,并且配置好 SSL
证书。
这里我是使用 Nginx
的反向代理实现的,将 registry.example.com -> 127.0.0.1:4873
,设置好证书,配置好代理,就可以访问页面了,但是页面是白屏,检查控制台发现是页面的静态资源还是使用 http
协议,导致加载错误。
解决页面白屏
在 Docker
安装命令中添加设置环境变量设置 VERDACCIO_PUBLIC_URL='https://registry.example.com'
,这里的 https://registry.example.com
是你配置好证书的域名。总的安装命令是:
docker run -itd --name verdaccio -p 4873:4873 -v /verdaccio/conf:/verdaccio/conf -v /verdaccio/storage:/verdaccio/storage -v /verdaccio/plugins:/verdaccio/plugins -e VERDACCIO_PUBLIC_URL='https://registry.example.com' verdaccio/verdaccio
使用方法
添加用户
使用 npm
的命令就可以了,默认装好是所有人都可以注册,后续可以在配置文件关闭
npm adduser --registry https://registry.example.com/
发布包
npm publish --registry https://registry.example.com/
发布成功后我们就可以在网页看到我们成功发布的包了,界面如下:
删除包
删除包只需要在服务器中 /verdaccio/storage/data
删除包即可。
更多操作
更多操作请查阅官方文档 Installation | Verdaccio