npm 全局或本地的软件包

本地和全局的软件包之间的主要区别是:

  • 本地的软件包 安装在运行 npm install <package-name> 的目录中,并且放置在此目录下的 node_modules 文件夹中。
  • 全局的软件包 放在系统中的单独位置(确切的位置取决于设置),无论在何处运行 npm install -g <package-name>

在代码中,应该只引入本地的软件包:

JS
require('package-name')

所以何时应该以一种或另一种方式安装?

通常,所有的软件包都应本地安装。

这样可以确保计算机中可以有数十个应用程序,并且如果需要,每个应用程序都可以运行不同的版本。

更新全局软件包会使所有的项目都使用新的版本,这可能会导致维护方面的噩梦,因为某些软件包可能会破坏与其他依赖项的兼容性等。

所有的项目都有自己的软件包本地版本,即使这看起来有点浪费资源,但与可能产生的负面影响相比也很小。

当程序包提供了可从 shell(CLI)运行的可执行命令、且可在项目间复用时,则该程序包应被全局安装。

也可以在本地安装可执行命令并使用 npx 运行,但是某些软件包最好在全局安装。

一些流行的全局软件包的示例有:

  • npm
  • create-react-app
  • vue-cli
  • grunt-cli
  • mocha
  • react-native-cli
  • gatsby-cli
  • forever
  • nodemon

可能已经在系统上安装了一些全局软件包。 可以通过在命令行上运行以下命令查看:

BASH
npm list -g --depth 0