Verdaccio 搭建内网 npm 服务器

2020年5月23日09:17:25来源:杜初元 评论

工作在一台不能连外网的电脑上,为了能够使用 npm install, 因此使用 verdaccio 搭建内网的npm 服务器

Verdaccio 官网: https://verdaccio.org/docs/en/installation

首先准备两台电脑,一台能连外网,一台不能连外网

在能连外网的电脑上安装 verdaccio,官网推荐的是

npm install -g verdaccio 全局安装,经测试,使用局部安装也可用

首先启动 verdaccio

步骤:

  1. 使用命令行打开到工作目录,笔者使用  ~/workspace
  2. 执行 npm init 命令,根据提示可以新建一个带有 package.json的目录,笔者操作后可生成 ~/workspace/verdaccio  目录
  3. 命令行 cd 到 ~/workspace/verdaccio 下
    执行命令  npm install verdaccio --save  
  4. 执行命令 node_modules\\.bin\\verdaccio 即可启动 verdaccio,此时命令行会打印出对应的 config文件路径,笔者使用过程中 在 win10 电脑上的路径为 C:\Users\用户名\.config\verdaccio\config.yaml,而在 win7 电脑上则为 C:\Users\用户名\AppData\Roaming\verdaccio\config.yaml
  5. 默认的配置放到C盘中了,决定放到当前工作目录下,方便控制,将默认的config文件拷贝到当前目录下,并在package.json 中的scripts中添加字段

 "start": "node_modules\\.bin\\verdaccio --config ./config.yaml"

  • 将之前启动的命令停掉,重新执行 npm start即可,至此verdaccio已启动完成, 默认是 http://localhost:4873/

然后安装依赖包

在一个还未安装依赖包的项目中添加一个 .npmrc 文件,里面内容为

registry=http://localhost:4873

然后执行 npm install命令,即可在verdaccio目录中的 storage目录下缓存对应的包

内网搭建

将verdaccio 目录整个拷贝到内网电脑上,然后执行 npm start 即可

在其它项目中添加 .npmrc 文件添加registry=http://your ip:4873

即可执行 npm install

注意事项:

以上步骤是理想情况下可以正常使用,但现实总是很残酷

内网执行npm install 后可能会发现有些包提示找不到,有几个原因:

  1. 外网npm 有缓存,因此在外网执行install命令前先执行 npm cache verify 清除缓存,或者使用npm cache clean --force 强行将缓存全部清除
  2. 有些模块在外网机器上全局安装过以后,好像就不会在storage中再次缓存,我目前的做法是将外网全局安装的包全部卸载掉
    npm list -g --depth 0 查看全局安装的包
  3. 外网 install 免翻墙,可以在 config.yaml 文件中修改 uplinks下的 npmjs的url值为 https://registry.npm.taobao.org
  4. Verdaccio默认是localhost,要使用ip给其它电脑访问,可在config.yaml 文件中添加一行 listen: 0.0.0.0:4873 
  5. 内网 npm install 时老是提示找不到 npm 这个package,不知道是为什么,暂时解决方案是在外网机器上的项目目录下执行 npm install --save-dev npm@6.9.0 指定的版本号是和当前npm的版本完全一致的,执行后会在 storage 中缓存 npm 包
  6. 项目中有依赖 node-sass 包时,还需要另外处理,外网安装node-sass会在 C:\Users\用户名\AppData\Roaming\npm-cache 目录下新建一个 node-sass 缓存目录,拷贝verdaccio到内网后安装就会失败,查看log是下载node文件失败
    解决方案是将外网的 node-sass 缓存目录拷贝到内网某个空目录,将该目录部署到iis 服务器,笔者是部署为 http://你的ip/node-sass/ ,并将 node-sass目录里面的 4.13.1 文件夹重命名为 v4.13.1 , 修改内网项目目录的 .npmrc
    添加一行 sass_binary_site=http://你的ip/node-sass/

至此,应该就完成了内网的npm 服务器搭建了

weinxin
我的微信
爱生活、爱学习的小伙伴可以通过扫一扫二维码添加我的个人微信一起交流!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: