npm install –global、–save、–save-dev的区别

问答npm install –global、–save、–save-dev的区别
王利头 管理员 asked 2 年 ago
3 个回答
Mark Owen 管理员 answered 2 年 ago

在使用 npm 安装包时,我们经常会用到 --global--save--save-dev 这几个选项。它们虽然都可以安装包,但实际用途却大不相同。今天我们就来深入了解一下它们之间的区别。

–global

--global 标志用于全局安装包。这意味着该包将被安装到系统范围内的 nodemodules 目录中,而不是当前项目的 nodemodules 目录中。

什么时候使用 –global

  • 安装命令行工具,如 webpackgulp。这些工具需要在系统范围内安装,以便可以在任何地方使用。
  • 安装全局依赖项,如 momentlodash。这些库通常在多个项目中使用,将其全局安装可以节省安装时间。

–save

--save 标志用于将包安装到当前项目的 node_modules 目录中,并将其添加到项目 package.json 文件的 dependencies 字段中。

什么时候使用 –save

  • 安装项目所需的依赖项。这些依赖项是项目代码正常运行所必需的。
  • 安装开发期间所需的依赖项,如测试框架和构建工具。这些依赖项在项目运行时并不需要,但对于开发过程很重要。

–save-dev

--save-dev 标志类似于 --save,但将包添加到 package.json 文件的 devDependencies 字段中。

什么时候使用 –save-dev

  • 安装仅在开发期间需要的依赖项。这些依赖项在项目运行时并不需要,但对于开发过程很重要,如单元测试框架、文档生成器。
  • 安装用于构建或测试的工具,如 babelwebpack。这些工具通常在开发过程中使用,但在项目运行时并不需要。

总结

  • –global:全局安装包,供系统中所有项目使用。
  • –save:将包安装到当前项目中,并将其添加到 dependencies 字段。
  • –save-dev:将包安装到当前项目中,并将其添加到 devDependencies 字段。

常见问题

  • 问:为什么在安装全局依赖项时需要使用 –global 而不能使用 –save?
    答:使用 –global 安装全局依赖项可以防止它们被意外添加到项目依赖项中,从而导致安装混乱。
  • 问:何时使用 –save-dev 而不是 –save?
    答:使用 –save-dev 安装开发依赖项,因为它们通常仅在开发过程中需要,而不是在项目运行时。
  • 问:如何卸载全局安装的包?
    答:使用 npm uninstall -g <package-name> 卸载全局安装的包。
seoer788 管理员 answered 2 年 ago

当你使用 npm 安装软件包时,你可以使用不同的标志来指定软件包的安装方式。最常见的标志是 --global--save--save-dev。这些标志决定了软件包的安装位置和如何处理其依赖项。

–global

--global 标志告诉 npm 将软件包安装到全局位置。这意味着软件包将安装在所有用户都可以访问的位置,通常是 /usr/local/bin。全局安装的软件包可在所有项目中使用,而无需显式包含在项目的 package.json 文件中。

使用 --global 安装软件包的主要优点是,你可以轻松地从命令行访问它。这对于需要在系统范围(外部项目)内使用的工具和命令行工具非常有用。

–save

--save 标志告诉 npm 将软件包安装到项目的 node_modules 文件夹中并将其添加到项目的 package.json 文件的 dependencies 对象中。这意味着软件包将与项目一起安装,并且是项目运行所必需的。

使用 --save 安装软件包的主要优点是,它确保软件包始终与项目一起安装。这对于项目依赖项和正在开发的软件包非常重要。

–save-dev

--save-dev 标志类似于 --save,但它将软件包添加到项目的 package.json 文件的 devDependencies 对象中。这意味着软件包仅在开发过程中需要,而不是运行时需要。

使用 --save-dev 安装软件包的主要优点是,它可以将开发工具和库与生产依赖项分开。这有助于保持 package.json 文件的简洁性,并防止不必要的软件包安装到生产环境中。

选择合适的标志

选择正确的标志取决于软件包的用途和预期用途。以下是一些指导原则:

  • 用于命令行工具和全局实用程序:使用 --global
  • 用于项目依赖项:使用 --save
  • 用于开发工具和库:使用 --save-dev

更多选项

除了这些标志外,npm 还提供了一些其他选项来控制如何安装软件包:

  • –only=prod:仅安装生产依赖项(等同于 --save)。
  • –only=dev:仅安装开发依赖项(等同于 --save-dev)。
  • –no-save:不将软件包添加到 package.json 文件中。
  • –ignore-scripts:安装软件包时不运行其脚本。

这些选项提供了进一步的粒度控制,可以根据你的特定需求进行定制。

ismydata 管理员 answered 2 年 ago

作为一名开发人员,使用npm(Node Package Manager)管理JavaScript依赖项已成为日常工作的一部分。除了安装依赖项之外,我们还必须指定它们应该如何安装,这可以通过三个关键标志来控制:–global、–save和–save-dev。

–global:全局安装

顾名思义,–global标志将在全局范围内安装依赖项。这意味着它将被系统中任何用户和项目访问。此选项适用于需要在所有项目中使用的实用程序或工具,例如 ESLint 或 webpack。

–save:项目依赖项

–save标志将依赖项安装到当前项目中。它会在项目目录的package.json文件中添加一个条目,该文件跟踪项目的所有依赖项。使用此标志,依赖项只对当前项目可用,并且当项目共享或部署时,它将包含在内。

–save-dev:开发依赖项

–save-dev标志类似于–save,但它专门用于开发依赖项。这些依赖项仅在开发过程中需要,例如测试框架、构建工具和调试器。它们不会包含在生产部署中,因为它们在运行时不需要。

如何选择合适的标志?

选择正确的标志取决于依赖项的性质和使用方式:

  • 全局依赖项:使用–global标志全局安装任何将由多种项目或用户使用的实用程序或工具。
  • 项目依赖项:对于所有项目都需要且将包含在生产部署中的依赖项,使用–save标志。
  • 开发依赖项:对于仅在开发过程中需要且不包含在生产部署中的依赖项,使用–save-dev标志。

示例

  • eslint: npm install –global eslint(全局安装 ESLint)
  • react: npm install --save react react-dom(将 React 和 ReactDOM 安装为项目依赖项)
  • mocha: npm install --save-dev mocha chai(将 Mocha 和 Chai 安装为开发依赖项)

结论

了解npm install中–global、–save和–save-dev标志之间的区别对于有效管理JavaScript依赖项至关重要。通过选择正确的标志,我们可以确保依赖项正确安装,仅在需要时才可用,从而实现高效和无故障的开发体验。

公众号