场景
公司开发环境完全离线,无法使用npm install。
一、先说原理
1.本质上就是利用一台能上网的机器,所安装npm的依赖缓存下来。然后将这个环境移植到离线网络环境中。选择verdaccio两个原因:简单、还再维护。它的大致工作如下:
本地创建一个提供npm依赖安装的网络服务。当接收到请求时,去寻找资源。找到之后,返回给客户端,并缓存此服务以便下次使用。
2.我们今天总体要做如下几件事
1.有网的机器安装verdaccio环境,并启动服务。2.通过npm install,使verdaccio缓存所需要的npm依赖包。3.将这个环境移植到内网服务器中,并启动服务。4.开发机器设置npm代理到服务器。
2.将此环境
二、实现步骤
0.这是他们的故事:
1个能再互联网呼吸的网络:随便一台机器(onlinePC)1个离线网络:私仓服务器(servicePC) + 开发人员的机器(devPC)1个U盘
------------------1.onlienPC篇(win10)--------------
前提:安装node.js(略)、安装python3(略)。
步骤如下
首次启动服务,生成配置文件config.yaml。
npm install -g verdaccio
关闭服务(ctrl + c),修改config.yaml,关键配置如下:
storage
: ./storage
uplinks
:
npmjs
:
url
: https
://registry
.npm
.taobao
.org
/
server
:
keepAliveTimeout
: 60
middlewares
:
audit
:
enabled
: true
listen
: 0.0.0.0:9999
重启服务缓存依赖包(关键的一步)
npm install
--registry http
://localhost
:9999
无报错的情况下环境完毕
------------------2.U盘篇--------------
因为内网完全没有网络,一切都要拷贝。所以别忘了node.js和python包
拷贝verdaccio自身: C:\Users\Administrator\AppData\Roaming\npm\node_modules\verdaccio拷贝verdaccio启动命令: C:\Users\Administrator\AppData\Roaming\npm\verdaccio.cmd C:\Users\Administrator\AppData\Roaming\npm\verdaccio.ps1拷贝verdaccio服务配置、缓存: C:\Users\Administrator\AppData\Roaming\verdaccio
------------------3.内网服务器servicePC篇(win7)IP 192.168.1.5-------------
安装node.js和pythonU盘中拷贝到对应目录后,启动服务,
npm install -g verdaccio
启动verdaccio,此时服务地址为,192.168.1.5:9999:
verdaccio
------------------4.开发机devPC篇(win7)-------------
设置npm代理
npm config set registry http://192.168.1.5:9999
项目目录下
npm install
三、注意
此篇案例来源是本人想再自己机器搭建方便其他同事,所以没有linux、docker的事,使用docker会让移植更方便。(有人可能要问服务器打包怎么办?都是泪啊,由于各种大环境因素,自动打包降成了同志们手动打包)做缓存的时候注意实际项目中package-lock.json的版本