node.js - .npm 缓存与 node_modules 大小
问题描述
在构建我们的节点应用程序时,我们使用 .npm 缓存,如下所示:
npm install --cache /tmp/node-cache/.npm --prefer-offline
但是我有理由相信,缓存无法正常工作,因为:
/tmp/node-cache/ # du -sh .npm/
177M .npm/
/tmp/build/ # du -sh node_modules/
1.1G node_modules
这是否意味着构建下载了额外的 900 M 并且没有将它们缓存在.npm
目录中?
解决方案
这是否意味着构建下载了额外的 900 M 并且没有将它们缓存在 .npm 目录中?
这是可能的。但也有可能是由于压缩和构建工件的组合造成的差异。
npm 缓存被压缩。node_modules
目录未压缩。
此外,npm
几乎可以肯定只缓存源代码。如果您正在使用类似、、、或其他具有自定义安装脚本或其他构建步骤的东西,那么构建工件可能会使您node-sass
的.PhantomJS
puppeteer
node_modules
我不一定仅从缓存没有得到尊重的大小差异得出结论。你将不得不做更多的调查。您可能会尝试的一件事是:
- 删除
node_modules
(package-lock.json
如果存在) npm cache clean --force
并确认缓存非常小npm install
node_modules
再次检查缓存的大小。
推荐阅读
- python-3.x - 有没有办法在 MongoDB 的一个语句中添加递增的 id?
- python - 用 ctypes 替换共享库中的函数指针
- amazon-web-services - 使用 terraform 从弹性 beantalk 应用程序设置弹性负载平衡的密码
- python - 在一行 Python 3 中分隔字符串和整数
- apache-spark - 如何使用 spark 的通配符运行 LOAD DATA INPATH hive 命令?
- javascript - React 将多级表导出到 CSV 文件
- ruby-on-rails - 即使`docker-compose run`命令失败,是否有可能返回true?
- python - 在条带结帐会话中传递产品 ID
- reactjs - 如何在 SPFx 1.10 中将 Web 部件的宽度填充为全屏宽度?
- c++ - OpenCL中逐行矩阵运算的实现