npm install中--save和--save-dev有什么区别?

6

我正在尝试理解何时何地使用这些标签,我知道一个是用于dev-dependency,另一个是用于project dependency,但在使用live project时,我发现它们之间没有任何区别。 我正在寻找一种方法,可以检测出错误类型的安装。 有没有办法做到这一点?


请注意,此问题已有重复:https://dev59.com/52Ah5IYBdhLWcg3wDfgW - daGo
3个回答

16

dependencies代表你的项目依赖的模块,devDependencies代表你用于开发项目的模块。您可以在npmjs网站上阅读详细说明:

如果有人计划下载并在其程序中使用您的模块,则他们可能不想或不需要下载和构建您使用的外部测试或文档框架。

在这种情况下,最好将这些附加项映射到一个devDependencies对象中。

依赖项的示例:requestconcat-streamobject.assignthrough2

devDependencies的示例:mochatapeeslintgruntbrowserify

dependencies始终在安装或初始化项目时安装,因为它们是项目运行所必需的。devDependencies仅针对开发(测试框架、任务运行器等),只有当有人从项目根目录运行npm install时才会安装它们,例如,在克隆项目存储库之后。

您可以轻松验证这一点。假设我在同一目录中有模块foobarbazquux。让foobaz的一个依赖项,barbaz的devDependency,并且baz本身是quux的一个依赖项。

#/$ cd baz
#/baz$ cat package.json
{
  "name": "baz",
  "version": "0.0.0",
  "dependencies": {
    "foo": "../foo"
  },
  "devDependencies": {
    "bar": "../bar"
  }
}
#/baz$ npm install
baz@0.0.0 /tmp/tmpdir/g6jBr9/baz
├── bar@0.0.0
└── foo@0.0.0

你可以看到,依赖和开发依赖都已安装。

现在让我们将 baz 安装为 quux 的一个依赖项:

#/$ cd quux
#/quux$ cat package.json
{
  "name": "quux",
  "version": "0.0.0",
  "dependencies": {
    "baz": "../baz"
  }
}
#/quux$ npm install
#/quux$ npm ls
quux@0.0.0 /tmp/tmpdir/g6jBr9/quux
└─┬ baz@0.0.0
  └── foo@0.0.0

注意,foo已经安装,但bar没有。这是因为如果你将某个模块作为另一个模块的依赖(即你是该模块的消费者),则你不需要该模块的devDependencies,因为它们对该模块的功能没有影响。


非常感谢您如此详细和精确地发布内容。 - user5393552
这太棒了,eush77!非常感谢! - devwannabe

3

npm install 默认会安装 devDependencies 和 dependencies。如果你想忽略 devDependencies 的安装,需要使用特定的标志或设置。参见 npm help install

With the --production flag (or when the NODE_ENV environment variable
       is set to production), npm will not install modules listed in
       devDependencies.

当你需要使用应用程序主要部分或将在生产中需要的内容时,请勿使用--save-dev或添加到devDependencies。通常只有在测试和构建等方面才需要使用devDependencies

说实话,我并没有看到使用devDependencies会带来巨大的好处。不使用它可以节省极少的空间和时间。使用它,你可能会排除掉一个重要的依赖项。虽然我不是说不要使用它,但对于一些项目来说,你可能不需要担心它。


如果我为一个项目(比如'myProject')安装了一个依赖项,并使用--save-dev选项,然后再为'mySuperProject'安装了'myProject'并使用--save-dev选项,那么'myProject'会正确运行吗? - user5393552

0

运行时会发现命令参数的差异

npm help install

这将为您打开一个本地文件的网页。

从网页上,有许多选项可供提供给npm install,并进行列出和解释。

以下是其中一部分,从npm功能角度回答了您的问题。

点击查看截图。(我还不允许在我的帖子中嵌入图片)

其中的主要部分如下所示:

npm install saves any specified packages into dependencies by default. Additionally,
you can control where and how they get saved with some additional flags:

-P, --save-prod: Package will appear in your dependencies. This is the default unless -D or -O are present.

-D, --save-dev: Package will appear in your devDependencies.

-O, --save-optional: Package will appear in your optionalDependencies.

--no-save: Prevents saving to dependencies.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接