-save-dev在npm install grunt是什么意思--save-dev


277

我刚刚开始使用Grunt.js。设置起来非常困难,我正要创建package.json文件。

在学习完本教程之后,它说有3种创建package.json文件的方法。

首先是要做 npm install grunt --save-dev

但是什么--save-dev意思呢?我试着看,但徒劳无功。



教程链接已损坏
SteveC '18

Answers:


317

--save-dev:软件包将出现在您的devDependencies中。

根据npm install docs

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

换句话说,当您运行时npm install,将安装项目的devDependencies,但不会安装应用程序依赖的任何程序包的devDependencies。此外,将您的应用程序作为依赖项的其他应用程序也不需要安装devDependencies。仅在开发应用程序时才需要此类模块(例如grunt,mocha等)。

根据package.json文档

编辑:尝试可视化做什么npm install

  • 您的项目
    • 依赖安装
      • 依赖安装
        • 依赖安装
        • 未安装devDependency
      • 未安装devDependency
    • devDependency已安装
      • 依赖安装
      • 未安装devDependency

2
默认情况下,它不会与dev依赖项一起安装,但是我如何与之一起安装?npm install --dev旗?
StanleyZheng 2014年

4
@stanzheng我不确定您需要知道什么。如果您在一个项目中并运行npm install,还将安装该项目的devDependencies。您不希望安装依赖项的devDependencies。如果要在npm软件包上进行开发,则需要git clone xxx该项目并npm install在其中运行。
Andreas Hultgren 2014年

3
“在运行npm install时将不会安装应用程序依赖项的devDependencies”是错误的。如果我有一个package.json,并且它的npm软件包中仅包含“ devDependencies”,然后键入“ npm install”,则将安装这些“ devDependecies”。
核心

6
我试图理解,但我没有。然后我尝试了解可视化,但我没有。每个项目要点是什么意思?一个文件夹?删除线是什么意思?一个不存在的目录?如果是这样,那么如何列出所有不存在的事物?
拉斐尔·伊恩

8
澄清一下,如果npm install在您的项目中运行,则将安装package.json中的所有devDependencies,但是如果您将项目打包为新的npm软件包并发布,则当其他人使用npm install安装软件包时,devDependencies将不会被安装。安装在他们的系统上。那正确吗?@stanzheng,或者您可以运行npm install --production来安装package.json中除开发依赖项之外的所有内容
rwilson04

99

您可以在package.json文件中指出(至少)两种类型的软件包依赖项:

  1. 使用“模块”属性下,列出了使用模块所需的那些软件包。使用npm,您可以通过以下方式将那些依赖项添加到package.json文件中:

    npm install --save packageName
  2. 为了帮助您开发模块而需要的那些软件包在“ devDependencies”属性下列出。这些软件包对于其他人使用该模块不是必需的,但是如果他们想帮助开发模块,则将需要这些软件包。使用npm,您可以通过以下方式将那些devDependencies添加到package.json文件中:

    npm install --save-dev packageName

35

要添加到Andreas的答案中,您可以使用以下方法仅安装依赖项:

npm install --production

7

来自npm的文档npm install <package-name> --savenpm install <package-name> --save-dev可以在以下位置找到:

https://docs.npmjs.com/getting-started/using-a-package.json#the-save-and-save-dev-install-flags

一个 package.json文件声明有关您正在开发的模块的元数据。前述两个命令均会修改该package.json文件。--save将声明已安装的软件包(在本例中为grunt)作为模块的依赖项;--save-dev会将其声明为模块开发的依赖项。

问问自己:使用我的模块是否需要安装的软件包,还是仅在开发它时才需要?


6

当您使用参数“ --save”时,您的依赖项将位于package.json中下面的#1内。当您使用参数“ --save-dev”时,您的依赖项将进入package.json中下面的#2内。

#1 “依赖关系”:您的应用程序在生产中需要这些软件包。

#2。“ devDependencies”:这些软件包仅用于开发和测试


5

对我来说,第一个答案似乎有点令人困惑,因此请简短明了:

npm install <package_name>默认将任何指定的软件包保存到依赖项中。此外,您可以使用一些其他标志来控制在何处以及如何保存它们:

npm install <package_name> --no-save 防止保存到依赖项。

npm install <package_name> ---save-dev 更新 devDependencies您包中的。这些仅用于本地测试和开发。

您可以在dcu中了解更多信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.