我在我的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 .
当我从项目根目录运行以下命令时,它会安装 dependencies
和 devDependencies
:
npm install
我的印象是这个命令安装了 devDependencies
:
npm install --dev
我怎么做到 npm install
只安装 dependencies
(所以 生产环境 环境只获得那些模块),而像 npm install --dev
这样安装 dependencies
和 devDependencies
?
13 回答
现在有一个问题,如果你有一个npm 5的package-lock.json . 您必须在使用
npm install --production
之前将其删除 .如果您已经安装了所有依赖项,并且希望避免再次从NPM下载 生产环境 包,则只需键入:
这将从
node_modules
文件夹中删除您的dev依赖项,如果您尝试自动执行两步过程,这将非常有用使用dev依赖项Webpack我的项目
仅使用 生产环境 模块构建Docker镜像
在中间运行
npm prune
将使您不必重新安装所有内容!需要添加到所选答案:截至目前,包目录(包含
package.json
)中的npm install
将安装devDependencies,而npm install -g
将不会安装它们 .我也遇到了这个问题! npm install有些令人困惑,Web帖子不断引入-d / - dev标志,好像有一个明确的'开发'安装模式 .
npm install 将同时安装“依赖项" and " devDependencies”
npm install --production 只会安装“依赖项”
npm install --dev 只会安装“devDependencies”
如果您在2016年阅读此POST,请通过使用实现您想要的
无论NODE_ENV如何,参数都将导致仅安装devDependencies或仅安装非devDependencies .
来自:https://docs.npmjs.com/cli/install
npm install
命令将在开发环境(默认)中的包目录内运行时沿其他dependencies
安装devDependencies
.无论
NODE_ENV
环境变量的值如何,都使用npm install --only=prod
(或--only=production
)来安装 onlydependencies
,而不是devDependencies,
.资料来源:npm docs
Note: 在npm(2015-08-13)的v3.3.0之前,该选项被称为
--production
,即npm install --production
.使用
npm install packageName --save
这将在 dependencies 中添加包,如果你使用npm install packageName --save-dev
那么它 devDependencies .npm install packageName --save-dev
应该用于添加包以用于开发目的 . 就像添加TDD包(Chai,mocha等)一样 . 哪些用于开发而非 生产环境 .npm install --production
是安装 生产环境 所需的节点模块的正确方法 . 查看文档以获取更多详细信息值得一提的是,您可以使用
NODE_ENV
环境变量来实现相同的结果 . 如果您正在容纳Node应用程序(例如Docker),则特别有用 .上面的代码将安装所有依赖项,但是安装dev(即
devDependencies
) .如果你需要在
Dockerfile
中使用环境变量,可以找到更多信息here .环境变量很容易在需要时覆盖(例如,如果您想在Travis CI上运行测试套件) . 如果是这种情况你可以做这样的事情:
NPM Documentation here
快乐的集装箱化 =)
使用“npm install”时,无论模块是“devDependencies”还是“依赖项”,模块都会在整个应用程序中加载并可用 . 这个想法的总和:package.json定义为依赖项(任何类型)的所有内容都安装到node_modules .
依赖项/ devDependencies / optionalDependencies之间差异的目的是代码的使用者可以使用n / n来安装这些资源 .
根据文档:https://npmjs.org/doc/json.html ...
但是,要解决此问题,如果您只想使用npm安装“依赖项”,则以下命令为:
这可以通过查看添加了此过滤器的Git提交(以及下面列出的一些其他过滤器)来确认功能) .
npm可以使用的替代过滤器:
@dmarr尝试使用npm install --production
我发现,当尝试为包含节点插件的软件包安装dev依赖项时,即使您只是想安装devDependencies,也无法避免在运行npm install --dev时构建插件 . 所以,我不得不绕着npm回来:
或者,更好(也更简洁),
新选项是:
如果只想安装devDependencies:
从软件包内部安装时,npm将安装dev依赖项(如果当前目录中有
package.json
) . 如果它来自另一个位置(npm注册表,git repo,文件系统上的不同位置),它只安装依赖项 .