我的package.json文件(简称)中有这个:

{
  "name": "a-module",
  "version": "0.0.1",
  "dependencies": {
    "coffee-script":      ">= 1.1.3"
  },
  "devDependencies": {
    "stylus":             ">= 0.17.0"
  }
}

我正在Mac 10.6.8上使用NPM 1.1.1版。

当我从项目根目录运行以下命令时,它将同时安装依赖项和devDependencies:

npm install

我觉得这个命令安装了devDependencies:

npm install --dev

如何使npm install只安装依赖项(所以生产环境只安装这些模块),而像npm install-dev这样的东西同时安装依赖项和devDependencies?


当前回答

npm安装--生产--无可选

它只安装依赖项的dep,并将忽略optionalDependencies和devDependencie

其他回答

需要添加到所选答案:到目前为止,在包目录(包含package.json)中的npm安装将安装devDependencies,而npm安装-g将不会安装它们。

现在有一个问题,如果你有npm5+的package-lock.json。在使用npm install--production之前,必须删除它。

如果您在2016年阅读此POST,请使用

--only={prod[uction]|dev[elopment]} 

参数将导致仅安装devDependencies或仅安装非devDependency,而不考虑NODE_ENV。

来自:https://docs.npmjs.com/cli/install

npm-install--production是安装生产所需节点模块的正确方法。有关详细信息,请查看文档

我在docker节点中遇到了一个问题:当前的slim(运行npm 7.0.9),其中npm安装似乎忽略了--production,--only=prod和--only=production。我找到了两种变通方法:

改用ci(RUN-npm-ci-only=production),这需要最新的package-lock.json在npm安装之前,使用以下命令残酷地编辑package.json:

RUN节点-e'const fs=require(“fs”);const pkg=JSON.parse(fs.readFileSync(“./package.JSON”,“utf-8”));删除pkg.devDependencies;fs.writeFileSync(“./package.json”,json.stringify(pkg),“utf-8”);'

这不会编辑您的工作包.json,只会编辑复制到docker容器中的包。当然,这不应该是必要的,但如果是(对我来说),那就是你的黑客。