node.js - 加速 npm 安装

标签 node.js npm

我正在尝试在构建过程阶段加快 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/

相关文章:

node.js - Node EADDRINUSE 错误 - 一个真正的解决方案?

css - 如何使用引用节点模块中的样式表

cordova - 安装cordova时出错

javascript - 如何跨 NodeJs 应用程序和模块正确重用与 Mongodb 的连接

javascript - ES6 导入发生在 .env 导入之前

node.js - 如何在没有并发的情况下拥有多个循环 RabbmitMQ 消费者

node.js - Json-server 的 Rest API 问题

node.js - 没有嵌套 node_modules 的 NPM 安装包

javascript - 让 NodeJS 应用程序使用 NPM 更新自身

node.js - ubuntu 中 npm install 抛出错误