您现在的位置是:网站首页 > 全局安装与本地安装文章详情
全局安装与本地安装
陈川
【
Node.js
】
24791人已围观
2297字
全局安装与本地安装的区别
Node.js 的包管理工具 npm 和 yarn 都支持两种安装方式:全局安装(global)和本地安装(local)。全局安装的包会被放在系统特定的目录下,通常可以在命令行中直接使用;而本地安装的包则会被放在项目的 node_modules
目录中,只能在当前项目中使用。
全局安装的典型场景是需要跨项目使用的工具,比如 create-react-app
、vue-cli
这类脚手架工具。本地安装则适用于项目依赖的库,比如 lodash
、axios
等。
# 全局安装示例
npm install -g create-react-app
# 本地安装示例
npm install lodash
全局安装的优缺点
优点
- 方便命令行工具的使用:全局安装后,可以在任何目录下直接运行命令,比如
create-react-app my-app
。 - 节省磁盘空间:如果多个项目都需要同一个工具,全局安装可以避免重复下载。
缺点
- 版本冲突:全局安装的包只有一个版本,如果不同项目需要不同版本的包,可能会出现问题。
- 依赖隔离性差:全局安装的包可能会影响其他项目的行为,尤其是当全局包的版本与项目所需版本不一致时。
# 查看全局安装的包
npm list -g --depth 0
本地安装的优缺点
优点
- 版本隔离:每个项目可以独立管理自己的依赖版本,避免冲突。
- 更好的可移植性:项目的
node_modules
包含了所有依赖,便于迁移和协作。
缺点
- 占用更多磁盘空间:每个项目都会有自己的
node_modules
,可能导致重复下载。 - 命令行工具使用不便:本地安装的工具需要通过
npx
或./node_modules/.bin/
来运行。
# 使用 npx 运行本地安装的工具
npx create-react-app my-app
如何选择安装方式
适合全局安装的场景
- 命令行工具,比如
nodemon
、eslint
、webpack
等。 - 需要跨项目使用的工具,比如
create-react-app
。
适合本地安装的场景
- 项目依赖的库,比如
react
、vue
、express
等。 - 需要精确控制版本的依赖。
# 全局安装 nodemon
npm install -g nodemon
# 本地安装 express
npm install express
全局安装与本地安装的路径
全局安装路径
全局安装的包通常会被放在以下目录:
- Windows:
%APPDATA%\npm\node_modules
- macOS/Linux:
/usr/local/lib/node_modules
可以通过以下命令查看全局安装路径:
npm root -g
本地安装路径
本地安装的包会被放在项目的 node_modules
目录中。如果使用 yarn
或 pnpm
,路径可能会有所不同。
# 查看项目的 node_modules 路径
ls node_modules
使用 npx 运行本地安装的工具
npx
是 npm 5.2+ 自带的一个工具,用于运行本地安装的包。它可以避免全局安装的麻烦,同时也能确保使用项目本地安装的版本。
# 使用 npx 运行本地安装的 eslint
npx eslint --version
全局安装与本地安装的版本管理
全局安装的版本管理
全局安装的包可以通过以下命令管理版本:
# 安装特定版本
npm install -g nodemon@1.0.0
# 更新全局包
npm update -g nodemon
# 卸载全局包
npm uninstall -g nodemon
本地安装的版本管理
本地安装的包可以通过 package.json
文件管理版本:
{
"dependencies": {
"lodash": "^4.17.21"
}
}
常见问题与解决方案
全局安装的包无法运行
可能是环境变量未配置正确。可以检查全局安装路径是否在系统的 PATH
中。
# 检查 PATH
echo $PATH
本地安装的包无法找到
确保在项目根目录下运行命令,或者使用 npx
。
# 使用 npx 运行本地安装的包
npx webpack
结合使用全局与本地安装
在实际开发中,通常会结合使用全局和本地安装。例如:
- 全局安装
nodemon
用于开发时的热更新。 - 本地安装
express
作为项目的依赖。
# 全局安装 nodemon
npm install -g nodemon
# 本地安装 express
npm install express
上一篇: NPM脚本(npm scripts)
下一篇: NPM依赖管理