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

Node.js ';npm install--only=dev';删除现有包,node.js,npm-install,Node.js,Npm Install,在处理节点项目时,我在使用npm分离应用程序安装和测试依赖项时遇到了问题。我使用的是节点版本8.1.2和npm版本5.0.3 为了详细说明,我使用docker为我的节点应用程序创建生产和测试映像,其思想是生产映像将只安装应用程序依赖项(例如aws sdk、xml builder)。我通过在production docker映像中运行npm install-q--only=prod来实现这一点 测试映像扩展了生产映像,并在其上安装测试依赖项(例如chai、mocha)。这是通过在测试docker映

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

为了详细说明,我使用docker为我的节点应用程序创建生产和测试映像,其思想是生产映像将只安装应用程序依赖项(例如aws sdk、xml builder)。我通过在production docker映像中运行
npm install-q--only=prod
来实现这一点

测试映像扩展了生产映像,并在其上安装测试依赖项(例如chai、mocha)。这是通过在测试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安装后删除package-lock.json

  • 在每次npm安装中使用选项<代码>--无程序包锁

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

编辑:


我刚刚发现这似乎是npm的问题。目前,我上面所写的变通方法应该可以奏效。

谢谢!我会投赞成票,但我不能,因为我在这个社区没有足够的声誉@尼山特利维迪:我处理好了;)此问题已在npm 5.1.0中修复