npm install是否排除dev依赖项?

时间:2016-08-09 12:50:10

标签: node.js npm

当我在Node.js项目中并运行npm install时,npm会同时安装依赖项和dev依赖项。如果我不想安装dev依赖项,我可以运行npm install --production

问题1:如果我提供--production:是否依赖'还是安装了dev依赖项,还是只安装了它们的实际依赖项?

现在,如果我在Node.js项目中并安装新的依赖项,例如:

npm install foo

这当然会安装foo的依赖项。

问题2:但它的开发依赖关系呢?它们也是安装的,还是被忽略了?

3 个答案:

答案 0 :(得分:3)

您的问题的答案:

  1. 是的,我们将npm install安装dev依赖项,只有当NODE_ENV设置为production
  2. 时才会安装dev依赖项
  3. 不会安装外部模块的dev依赖项,请参阅here

答案 1 :(得分:1)

默认情况下运行npm install时,还会安装依赖项和devDependency依赖项。因为如果要开发一个包,我们会下载它,例如从git转到root文件夹并运行。

npm install 

所以你希望有devDependencies。

npm install "$package"

默认情况下不安装devDependencies。但是,如果您真的想在这种情况下安装开发包,可以将dev config选项设置为true:

npm install "$package" --dev

答案 2 :(得分:0)

节点应用程序使用多种方法来维护依赖关系的最新版本,但是需要考虑多种依赖关系类型。依赖关系在package.json文件内的节点应用程序的根目录中找到。我将介绍不同的依赖关系类型,并列出一些定义的特征或特性:

依赖项: 这些是在将包名称映射到版本范围的简单对象中指定的。版本范围是一个字符串,具有一个或多个以空格分隔的描述符。依赖关系也可以通过tarball或git URL进行识别。

从包含package.json的目录中安装npm npm在任何其他目录上安装$ package 需要依赖项才能运行 过渡安装:如果A需要B,而B需要C。则C被安装,否则B无法工作,A也将无法工作。 devDependencies: 如果有人打算在程序中下载和使用模块,那么他们可能不想或不需要下载并构建您使用的外部测试或文档框架。在这种情况下,最好将这些其他项映射到devDependencies对象中,除非用户专门传递--dev,否则在用户安装软件包时不会安装该对象。这些通常是从软件包根目录进行传统的npm安装时安装的。

npm安装在包含package.json的目录上,除非开发人员通过--production标志。
未安装在npm上,请在任何其他目录上安装“ $ package”,除非给它--dev选项 没有过渡安装 其他依赖类型: 这些不太常用,但可以达到目的。

peerDependencies optionalDependencies