我正在尝试在构建过程阶段加快npm安装.我的package.json包含了几乎包含锁定修订的软件包列表.我还使用该命令配置了缓存目录
npm config set cache /var/tmp/npm-cache --global
Run Code Online (Sandbox Code Playgroud)
但是,在尝试使用安装时npm install -g --cache,我发现这一步并没有像我期望的那样只通过从缓存加载包来减少安装时间.事实上,我怀疑它是否甚至使用本地缓存来首先查找包.
Lee*_*iam 10
对于纯 npm 解决方案,您可以尝试
npm install --prefer-offline --no-audit --progress=false
Run Code Online (Sandbox Code Playgroud)
首选离线可能对第一次运行没有用。
正如@Daniel Serodio所说
您还可以包括你node_modules文件夹中的仓库里,但你可能应该压缩它首先不是增加回购,并同时安装,你可以解压缩它,只是
npm rebuild
Run Code Online (Sandbox Code Playgroud)
(它跨平台工作)它很快.
这也可以让您完全控制所有依赖项.
您还可以将进程标志设置为false,以将速度提高2倍.
npm set progress=false
Run Code Online (Sandbox Code Playgroud)
提出两种新的方法:
1) npm ci
Use npm ci,它可以从npm版本获得5.7.0(尽管我建议5.7.1向上使用,因为发行版已损坏)-这需要package-lock.json存在,并且会跳过从package.json文件中构建依赖项树的过程,并遵守锁定文件中已解析的依赖项URL。
快速提高您的CI / CD环境(我们的构建时间减少到原来的四分之一!)和/或确保开发过程中所有开发人员都使用相同版本的依赖项(而不必进行硬编码)package.json文件中的严格版本)。
但是请注意,它会在安装前npm ci删除node_modules/目录,因此不会从任何缓存策略中受益。
2) npm i --prefer-offline
将--prefer-offline标记与常规npm install/一起使用npm i。使用这种方法,您需要确保已node_modules/在构建之间缓存目录(在CI / CD环境中)。如果无法在本地找到具有特定版本的软件包,它将安全地退回到网络。
您还可以node_modules在您的存储库中包含您的文件夹(您可能正在使用 git),并且只是npm rebuild(跨平台工作)在构建/部署过程中,并且速度非常快。
这也将使您完全控制所有依赖项的好处(我知道这通常应该用于shrinkwrap)
编辑:
您也可以将进度标志设置为 false 以将您的速度提高至少20%。这仅适用于 npm@v3.xx,并且有望很快修复(请参阅第二个链接)
npm set progress=false
Run Code Online (Sandbox Code Playgroud)
最好pnpm使用以下命令安装软件包:
npm我-g pnpm
pnpm使用硬链接和符号链接仅一次在磁盘上保存模块的一个版本。例如,当使用npm或Yarn时,如果有100个项目使用相同版本的lodash,则磁盘上将有100个lodash副本。使用pnpm,lodash将保存在磁盘上的单个位置,并且硬链接会将其放入应该安装它的node_modules中。
作为示例,我可以提到,只要您想安装package.json文件的依赖项,您应该做的就是简单地输入,pnpm i然后它自己处理其他事情。
| 归档时间: |
|
| 查看次数: |
17955 次 |
| 最近记录: |