本篇文章以第二种方式为主,因为截至目前 sinopia
包已经有5年未曾更新,可能已经不再维护了,而 verdaccio
的包目前还在维护和更新。
sinopia
是一个可以快速搭建本地npm镜像的服务,安装使用非常简单,最大的好处是可以很方便的管理私有模块。
# 安装
# 安装后会生成一个默认配置文件 config.yaml ,可以后续更改
$ npm install -g sinopia
# 启动
$ sinopia
# 设置npm镜像
# 也可以在具体操作的时候指定
# npm adduser --registry http://localhost:4873
$ npm set registry http://localhost:4837/
# 如果使用 HTTPS 请添加一个适当的 CA 信息
# null 表示从操作系统获取 CA 列表
$ npm set ca null
# 安装
# 安装后会生成一个默认配置文件 default.yaml ,可以后续更改
$ npm install -g verdaccio
# 查看 npm 全局安装的位置
$ npm root -g
使用命令行启动后,生成一个默认的 config.yaml 配置文件,并且会启动一个 http://localhost:4873
的服务,访问 http://localhost:4873
服务即可看到。
同时会在 /AppData/Roaming/
目录中新建一个 verdaccio
文件夹作为私服的存储地址。自己发布的包会放在 storage
目录中
# 启动服务
$ verdaccio
默认是没有用户的,需要先添加一个用户,输入用户名 username 和密码 passowrd,如username: admin
,password: admin
。注意在输入密码时是不显示输入的内容的,所以要准确输入,以防多输入或者少输入或者输入错误的字符,导致登录的时候密码输入错误。
# 添加用户密码
$ npm adduser --registry http://localhost:4873/
username: # 输入用户名
password: # 输入密码
发布自己的包后,登录 http://localhost:4873
, 或者刷新 http://localhost:4873
页面即可看到自己已经发布成功的包。
注意想要发布本地的 npm 包,需要在 npm 项目中的根目录执行以下命令,因为 npm publish
命令回去查找并读取当前目录下的 package.json
文件。
# 发布本地 npm 包
$ npm publish --registry http://localhost:4873/
发布成功后在/AppData/Roaming/verdaccio/storage/
目录下就可以看到已经发布的包了。
此时再去查看 http://localhost:4873/
,就能看到已经发布的 npm 包了。
如果已经启动了 verdaccio 服务,则优先会查找本地 /AppData/Roaming/verdaccio/storage/
目录中的已存在的包。
# 安装依赖包
$ npm install vite-react-todolist
但是也有例外,当无法自动查找本地的包时,可以指定本地的安装路径,如下:
$ npm install vite-react-todolist --registry http://localhost:4873
# 安装 pm2
$ npm install pm2 -g
# 启动 verdaccio
$ pm2 start verdaccio
# 停止 verdaccio
$ pm2 stop verdaccio
# 重启 verdaccio
$ pm2 restart verdaccio
# 删除 verdaccio
$ pm2 delete verdaccio
# 查看 verdaccio 日志
$ pm2 logs verdaccio