我的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-ci。如果您只想安装生产所需的软件包(正如您所写的那样-没有devDependencies),那么:

npm ci --only=production

or

NODE_ENV=production npm ci

如果您喜欢老式npm安装,那么:

npm install --production

or

NODE_ENV=production npm install

这里有一个很好的答案,为什么你应该使用npm-ci。

其他回答

使用npm install packageName--save这将在依赖项中添加包,如果使用npm安装packageName--save dev then it devDependencies。

npm install packageName——save-dev应用于添加用于开发目的的包。比如添加TDD包(Chai、摩卡等)。用于开发而非生产。

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

当从包内部安装时,npm将安装dev依赖项(如果当前目录中有package.json)。如果它来自另一个位置(npm注册表、git repo、文件系统上的不同位置),它只安装依赖项。

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

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