首页 > 解决方案 > 你如何让`npm prune --production`递归操作?

问题描述

似乎是一件相当简单的事情,但我在互联网上找不到任何东西。

似乎npm prune --production只下降到当前包的node_modules文件夹中。但是,它不会沿树递归node_modules以递归方式删除devDependencies。结果是由于删除了它的direct devDependencies,我的项目的规模有点小,但是devDependencies项目的 仍然是可传递的,在实际项目中它会变得不必要地大。

npm版本6.4.16.14.4.

标签: node.jsnpm

解决方案


好的,在 npm 文档没有太多帮助的情况下,想通了。

要仅递归安装dependencies(即仅生产依赖项),您需要执行两个步骤:

  1. 打电话npm ci。这仅安装dependencies在项目的传递依赖项之间,但它也安装项目的直接devDependencies.
  2. 打电话npm prune --production。这摆脱了顶级项目的devDependencies.

通过这些步骤,您可以极大地减小项目的大小,这对于创建 Docker 镜像等可部署项目很有帮助。如果您确保包含RUN npm ci && npm prune --production在您Dockerfile的 s 中,您的最终图像将比不包含时小得多,这要归功于一个小得多的node_modules目录。


推荐阅读