使用verdaccio搭建私有npm仓库
介绍
verdaccio是一个npm包管理工具,其特点是可以托管私有模块,并且带有缓存功能,当私有仓库中找不到对应模块的时候,会去npm公服上面下载,并缓存起来
verdaccio 对应的前身是sinopia,由于sinopia的作者已经不维护了,所以我们使用维护更新积极的verdaccio,在配置使用上,verdaccio和sinopia无区别,容易上手
部署
verdaccio依赖nodejs和npm环境,没有安装node环境的同学请移步到node官网下载安装,准备好nodejs环境后,使用npm安装verdaccio
npm install --global verdaccio
安装完毕可以直接运行verdaccio开启私有npm服务,但是我们一般不会这样做,如果需要对verdaccio进行一些启动配置,在路径:
/users/用户名/.config/verdaccio
下增加一个config.yaml文件
#
# This is the default config file. It allows all users to do anything,
# so don't use it on production systems.
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/master/conf
#
# 建议在安全上多做考虑,因为这个registry在开发环境和生产环境我们都是需要的
listen: 0.0.0.0:4873
# path to a directory with all packages
storage: ./storage
auth:
htpasswd:
file: ./htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
#max_users: 1000
# a list of other known repositories we can talk to
# 使用淘宝的cnpmjs镜像,加速
uplinks:
npmjs:
url: https://registry.npm.taobao.org/
# 识别@syt/xxxx这样的package为Private的,其他的@xx/yyy都会到upstream去获取
packages:
'@syt/*':
# scoped packages
access: $all
publish: $authenticated
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish packages
# (anyone can register by default, remember?)
publish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
# log settings
logs:
- {type: stdout, format: pretty, level: http}
#- {type: file, path: verdaccio.log, level: info}
一般我们都会使用pm2守护进程去启动verdaccio,避免断开连接后服务关闭,这里需要安装一下pm2
$ npm install -g pm2
$ pm2 start verdaccio # 让pm2启动verdaccio
启动后,我们打开浏览器http://0.0.0.0:4873,可以部署上私有npm的模块
增加用户&发布模块
首先,全局安装nrm可以快速修改,切换,增加npm镜像地址
npm install -g nrm # 安装nrm
nrm add local http://0.0.0.0:4873 # 添加本地的npm镜像地址
nrm use local # 使用本地npm地址
nrm的其他命令:
$ nrm --help # 查看nrm命令帮助
$ nrm list # 列出可用的 npm 镜像地址
切换到公司的npm镜像后,就可以用标准的npm命令增加用户,发布包
$ npm addUser
$ npm publish
参考资料
https://verdaccio.org/docs/zh-CN/configuration
https://blog.csdn.net/YYZZHC999/article/details/80100388