因工作需要,所以需要在内网脱网环境进行开发Vue项目,那么问题来了,我们的node_modules依赖包要怎么在内网环境部署呢?
系统:window 10
node:16.11.1
npm: 8.0.0
项目:Vue
离线环境的node和npm版本需要跟外网环境的版本一致(即你从哪个环境中复制缓存)
解决方案
操作步骤只有两步,复制和全局安装,即:
复制本地local下的npm-cache文件,至内网环境同目录下,如果不知道在哪里,则可以执行如下指令:
npm config get cache // 可看到此路径 C:\Users\HP\AppData\Local\npm-cache // 这只是我本人电脑中的路径,根据系统不同,略有不同
可以看到我们本地npm缓存的位置,把npm-cahe整个文件复制进去即可
使用-offline指令,即:
npm install -offline
此命令是使用本地缓存的依赖包进行安装
如果新增了依赖包,则需要把npm cache复制到离线环境,然后需要替换项目的package.json、package-lock.json文件,然后再进行install --offline即可
扩展
npm的缓存机制
npm install在执行时,首先构建依赖树,一次安装依赖树中的包。
如果缓存中有依赖包,就会向远程仓库确认是否过期(304检查)检查,如果过期,就使用新的返回数据刷新缓存,否则就直接使用缓存中的数据。
此外还提供了新的参数,是用户可以指定缓存使用的策略
--prefer-offline: 将使npm跳过任何条件请求(304检查)直接使用缓存数据,只有在缓存无法匹配到的时候,才去访问网络。这样我们将依赖包添加到项目的过程就会快很多。
例如,npm install express --prefer-offline将现在缓存中匹配express,只有在本地缓存没有匹配到的情况下,才去联网下载。
--prefer-online: 与它将强制npm重新验证缓存的数据(使用304检查),并使用重新验证的新鲜数据刷新缓存。
--offline 将强制npm使用缓存或退出。如果尝试安装的任何内容尚未在缓存中,则它将出现代码错误。
可以通过.npmrc或者npm config set来设置缓存使用的策略。
一个新的npm cache verify命令,它将对你的缓存进行垃圾回收,减少不需要的东西占据的磁盘使用量,并且会对索引和内容进行全面的完整性验证
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。