在内网创建npm私有仓库
安装Verdaccio和pm2
## 安装,使用详见:https://www.sidoc.cn/doc/1197.html 和 https://www.sidoc.cn/doc/1357.html
npm install pm2 -g
## 安装
npm install --location=global verdaccio@next
## 启动,启动后会输出配置文件位置、访问地址等信息
verdaccio
注意:在windos自带的 cmd命令行 和 Git Bash 中启动 verdaccio 时,其配置文件和npm包的位置是不一样的;
Verdaccio
配置打开配置文件config.yaml
,进行如下配置:(启动 Verdaccio 时会输出配置文件位置,配置完成后要重启Verdaccio)
## 配置 Verdaccio 网页的title、logo等
web:
## 网页title
title: Verdaccio
## 包的排序 asc 降序 desc 升序
# sort_packages: asc
## 是否开启暗黑模式
# darkMode: true
## 网页 logo
# logo: http://somedomain/somelogo.png
## 网页 favicon
# favicon: http://somedomain/favicon.ico | /path/favicon.ico
## ...
## 配置上游源,此处设为阿里云的源
uplinks:
npmjs:
url: https://registry.npmmirror.com/
## 配置 Verdaccio 网页的监听地址
listen: 0.0.0.0:4873
## 配置 Verdaccio 网页为中文
i18n:
web: zh-CN
缓存npm包到Verdaccio
## 1.0> 设置npm源为verdaccios私库
npm config set registry http://localhost:4873/
npm config get registry
## 2.0> 清除npm缓存
## 使用npm安装包时,npm会先从缓存中寻找包,如果缓存中没有才会去仓库中下载;
## 如果npm从本地缓存中安装依赖包,就不会走verdaccios私库,verdaccios私库就无法缓存npm包,但我们的目的是想让verdaccios私库缓存npm包,所以必须在安装依赖包前清理本地缓存;
npm cache clean -f
## 3.0> 通过 verdaccio 安装当前目录下 package.json 中的依赖,verdaccios会自动缓存没有被缓存的包
npm install --registry http://localhost:4873
## 验证某个包是否已被缓存
http://localhost:4873/<包名>
注:使用 npm 下载包时,不要开代理软件,否则下载某些包时可能会报错;
注:不要通过 package.json 下载npm包,要根据 packlage.lock.josn 下载;因为通过 packlage.lock.josn 才能下载版本统一的包,通过 packlage.josn 下载的包其版本不固定,在不同的内网环境中可能会报错或找不到包。
注:Verdaccio默认将npm包缓存到storage目录下,如下图;迁移Verdaccio后,其中package.json中的某些属性可能会被自动修改,例如:fetched、_ref等,这些属性只是记录npm包的更新
状态和历史,并不影响正确使用。
将Verdaccio迁移到内网
迁移verdaccio需要知道全局npm依赖和verdaccio的位置,并将其中的一些文件复制到内网相应的位置;具体要复制的文件如下:
1.0> 通过 npm root -g
命令查看 npm 全局依赖的位置,并复制如下文件3分部文件
2.0> 启动 verdaccio ,启动后会输出 verdaccio 配置目录位置,复制整个 verdaccio 配置目录:
注:配置目录并不一定在 .config 目录下,请务必在启动 verdaccio 后,查看具体的配置目录位置;
pm2启动Verdaccio及常用命令
## 列出被 pm2 管理的所有进程
pm2 -ls
## 关闭某个进程
pm2 stop C:\Users\EDY\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
## 重启某个进程
pm2 restart C:\Users\EDY\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
## 删除某个进程
pm2 delete C:\Users\EDY\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
## 启动某个进程
pm2 start C:\Users\EDY\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
注:上述命令不能在git bash
中执行,必须在cmd
中执行;git bash
中要求路径必须是/
分隔,而cmd
中要求路径必须是\
分隔;
注:在windows上,pm2不能直接设置开机自启,需要借用三方库;此处直接将启动命令写到.bat脚本中,然后放到开机启动目录下来实现开机自启,启动脚本内容如下:
pm2 start C:\Users\EDY\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
设置npm源
## 设置npm源为私库
npm config set registry http://localhost:4873/
## 恢复npm源为默认
npm config set registry https://registry.npmjs.org/
## 阿里云npm镜像
npm config set registry https://registry.npmmirror.com
## 查看npm源
npm config get registry
注意事项
1. 安装配置完Verdaccio
后,执行 npm install
命令时,npm
会先从本地全局缓存搜索依赖包;若未找到,再会去本地仓库找,如果本地仓库未找到,再会去远程仓库找。因此使用 npm install
向本地仓库缓存依赖包。
2. 通过 npm install
安装依赖包,当前目录下的 package.json.lock 要删除,因为该文件中指定的依赖的下载位置,其优先级高于 npm config set resgistry 配置的镜像。