在内网创建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

配置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

## 设置npm源为verdaccios私库
npm config set registry http://localhost:4873/
npm config get registry

## 清除npm缓存
## 使用npm安装包时,npm会先从缓存中寻找包,如果缓存中没有才会去仓库中下载;
## 如果npm从本地缓存中安装依赖包,就不会走verdaccios私库,verdaccios私库就无法缓存npm包,但我们的目的是想让verdaccios私库缓存npm包,所以必须在安装依赖包前清理本地缓存;
npm cache clean -f

## 通过 verdaccio 安装当前目录下 package.json 中的依赖,verdaccios会自动缓存没有被缓存的包
npm install --registry http://localhost:4873

## 验证某个包是否已被缓存
http://localhost:4873/<包名>

注: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 配置的镜像。

举报

© 著作权归作者所有


1