node.js - 你如何让`npm prune --production`递归操作?
问题描述
似乎是一件相当简单的事情,但我在互联网上找不到任何东西。
似乎npm prune --production
只下降到当前包的node_modules
文件夹中。但是,它不会沿树递归node_modules
以递归方式删除devDependencies
。结果是由于删除了它的direct devDependencies
,我的项目的规模有点小,但是devDependencies
项目的 仍然是可传递的,在实际项目中它会变得不必要地大。
从npm
版本6.4.1
到6.14.4
.
解决方案
好的,在 npm 文档没有太多帮助的情况下,想通了。
要仅递归安装dependencies
(即仅生产依赖项),您需要执行两个步骤:
- 打电话
npm ci
。这仅安装dependencies
在项目的传递依赖项之间,但它也安装项目的直接devDependencies
. - 打电话
npm prune --production
。这摆脱了顶级项目的devDependencies
.
通过这些步骤,您可以极大地减小项目的大小,这对于创建 Docker 镜像等可部署项目很有帮助。如果您确保包含RUN npm ci && npm prune --production
在您Dockerfile
的 s 中,您的最终图像将比不包含时小得多,这要归功于一个小得多的node_modules
目录。
推荐阅读
- php - 列类型为文本时如何获取列的最小值?
- mongodb - 无法理解 bgchaindb 的行为?
- javascript - 添加到 Uint32Array 时 0x100000000 >>> 0 在 Javascript 中实际上做了什么
- java - XMLSignature 默认为 RSA,如何验证 SSL 签名的 DSA 曲线?
- c - 如何使用 DejaGnu 设置单元测试
- amazon-web-services - AWS Athena 上的访问被拒绝
- python - 如何使用 FFMPEG 的 avformat_write_header 输出到 v4l2 驱动程序?
- c# - 如何在 RichTextBox WPF C# 中获取字符串中单词的颜色?
- python - 为什么 tensorflow/models 不是 TensorFlow API 的一部分?Python 模块?
- ios - 无法在 ionic 中的 Azure 移动服务上向单个 iOS 用户发送推送通知