【问题标题】:What does -save-dev mean in npm install grunt --save-dev-save-dev 在 npm install grunt --save-dev 中是什么意思
【发布时间】:2013-10-13 22:06:08
【问题描述】:

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

tutorial 之后,它说有 3 种方法可以创建 package.json 文件。

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

但是--save-dev 是什么意思?我试着找了找,但没有结果。

【问题讨论】:

标签: node.js gruntjs npm


【解决方案1】:

--save-dev: 包会出现在你的devDependencies中。

根据npm install docs.

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

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

根据package.json docs

编辑:尝试可视化 npm install 的作用:

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

【讨论】:

  • 默认情况下它不会安装开发依赖项,但我如何安装呢? npm install --dev 标志?
  • @stanzheng 我不确定你需要知道什么。如果您在一个项目中并运行npm install,该项目的 devDependencies 也将被安装。您不希望安装依赖项的 devDependencies。如果你想在 npm 包上进行开发,你可以 git clone xxx 那个项目,并在其中运行 npm install
  • “运行 npm install 时不会安装应用程序依赖项的 devDependencies”不正确。如果我有一个 package.json 并且它只包含带有我的 npm 包的“devDependencies”,然后我输入“npm install”,那么那些“devDependencies”就会被安装。
  • 我试图理解但我没有。然后我试图理解可视化,但我没有。每个要点项目是什么意思?一个文件夹?删除线项目是什么意思?一个不存在的目录?如果这是真的,你怎么能详尽地列出不存在的东西?
  • 澄清一下,如果npm install在你的项目中运行,package.json中的所有devDependencies都将被安装,但是如果你将你的项目打包为一个新的npm包并发布它,当其他人安装时你的包带有 npm install,devDependencies 将不会安装在他们的系统上。那正确吗? @stanzheng 或者你可以运行 npm install --production 来安装 package.json 中除了 dev 依赖项之外的所有内容
【解决方案2】:

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

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

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

    npm install --save-dev packageName
    

【讨论】:

    【解决方案3】:

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

    npm install --production
    

    【讨论】:

      【解决方案4】:

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

      #1。 “依赖项”:生产中的应用程序需要这些包。

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

      【讨论】:

      • 这是英文最清楚最简单的解释。
      【解决方案5】:

      可以在此处找到来自 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】:

        对我来说,第一个答案似乎有点令人困惑,所以为了简短明了:

        npm install <package_name>默认将任何指定的包保存到依赖项中。此外,您可以使用一些额外的标志来控制它们的保存位置和方式:

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

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

        您可以在in the dcu阅读更多内容

        【讨论】:

          【解决方案7】:

          --save-dev 意思是“开发时才需要”

          • 例如使用您的软件包的最终用户不会想要/不需要/关心您使用的测试套件;他们只需要在生产环境中运行代码绝对需要的包。此标志标记了开发与生产时所需的内容。

          【讨论】:

            【解决方案8】:

            -保存

            安装的包是核心依赖。

            –save-dev

            安装的包不是核心依赖,而是开发依赖。

            【讨论】:

              猜你喜欢
              • 2014-09-04
              • 2016-08-18
              • 2016-02-03
              • 1970-01-01
              • 2014-04-09
              • 2016-01-08
              • 2021-11-11
              • 2013-10-08
              相关资源
              最近更新 更多