npm 全局或本地的软件包
本地和全局的软件包之间的主要区别是:
- 本地的软件包 安装在运行
npm install <package-name>
的目录中,并且放置在此目录下的node_modules
文件夹中。 - 全局的软件包 放在系统中的单独位置(确切的位置取决于设置),无论在何处运行
npm install -g <package-name>
。
在代码中,应该只引入本地的软件包:
JSrequire('package-name')
所以何时应该以一种或另一种方式安装?
通常,所有的软件包都应本地安装。
这样可以确保计算机中可以有数十个应用程序,并且如果需要,每个应用程序都可以运行不同的版本。
更新全局软件包会使所有的项目都使用新的版本,这可能会导致维护方面的噩梦,因为某些软件包可能会破坏与其他依赖项的兼容性等。
所有的项目都有自己的软件包本地版本,即使这看起来有点浪费资源,但与可能产生的负面影响相比也很小。
当程序包提供了可从 shell(CLI)运行的可执行命令、且可在项目间复用时,则该程序包应被全局安装。
也可以在本地安装可执行命令并使用 npx 运行,但是某些软件包最好在全局安装。
一些流行的全局软件包的示例有:
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
可能已经在系统上安装了一些全局软件包。 可以通过在命令行上运行以下命令查看:
BASHnpm list -g --depth 0