gpt4 book ai didi

node.js - 'npm install --only=dev' 删除现有包

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:26 26 4
gpt4 key购买 nike

在处理 Node 项目时,我在使用 npm 分离应用程序安装和测试依赖项时遇到问题。我使用的是 Node 版本 8.1.2 和 npm 版本 5.0.3

为了详细说明,我正在使用 docker 为我的 Node 应用程序创建生产测试镜像,并认为生产镜像将具有仅安装了应用程序依赖项(例如 aws-sdk、xml-builder)。我通过在 生产 docker 镜像中运行 npm install -q --only=prod 来完成此操作。

测试镜像扩展了生产镜像并在其上安装测试依赖项(例如 chai、mocha)。这是通过在 test docker 镜像中运行 npm install -q --only=dev 命令来实现的。本练习的目的是创建一个干净的生产镜像,其中没有不必要的包。

但是当我执行后一个npm命令(npm install -q --only=dev)时,它会删除第一次安装时安装的软件包。我在另一个使用旧版本 npm 和 node 的项目中做了同样的事情,它工作得很好。

最新版本的 npm 有什么变化吗?如果是这样,是否有另一种规定的方法可以达到相同的效果?

最佳答案

这不是因为 Node.js 的新版本,而是因为捆绑在一起的新版本的 npm(版本 5)。

根据您的情况,您可以执行以下操作之一:

  • 首先在生产镜像中执行 npm install --only=prod,然后在测试镜像中执行 npm install

  • 在第一次 npm install 后删除 package-lock.json

  • 在每个npm install中使用选项--no-package-lock

新的 npm 版本使用一个名为 package-lock.js 的新文件,该文件会产生此行为,更多信息 here

编辑:

我刚刚发现这是npm的问题,看起来it will be fixed in the next release 。目前我上面写的解决方法应该有效。

关于node.js - 'npm install --only=dev' 删除现有包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com