我正在尝试在构建过程阶段加快 npm 安装。我的 package.json 包含几乎带有锁定修订的软件包列表。我还使用命令配置了缓存目录
npm config set cache /var/tmp/npm-cache --global
但是,在尝试使用 npm install -g --cache
进行安装时,我发现这一步并没有像我预期的那样通过从缓存中加载包来减少安装时间。事实上,我怀疑它是否甚至首先使用本地缓存来查找包。
最佳答案
提出两个更现代的方法:
1) npm ci
使用 npm ci
,可从 npm 版本 5.7.0
获得(虽然我推荐 5.7.1
及更高版本,因为 broken release ) - 这需要 package-lock.json
存在,它会跳过从 package.json
文件构建依赖关系树,尊重锁中已经解析的依赖关系 URL文件。
非常快
提升您的 CI/CD 环境(我们的构建时间减少到原来的四分之一!)和/或确保您的所有开发人员在开发过程中使用相同版本的依赖项(无需在您的 package.json
文件)。
但是请注意,npm ci
在安装之前会删除 node_modules/
目录,因此它不会受益于任何缓存策略。
2) npm i --prefer-offline
在您的常规 npm install
/npm i
中使用 --prefer-offline
标志。使用这种方法,您需要确保在构建之间(在 CI/CD 环境中)缓存了 node_modules/
目录。如果无法在本地找到特定版本的包,它会安全地回退到网络。
您还可以添加 --no-audit --progress=false
以减少安装前检查并移除进度条(后者只是非常轻微的改进)
关于node.js - 加速 npm 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077725/