您现在的位置是:网站首页 > 全局安装与本地安装文章详情

全局安装与本地安装

全局安装与本地安装的区别

Node.js 的包管理工具 npm 和 yarn 都支持两种安装方式:全局安装(global)和本地安装(local)。全局安装的包会被放在系统特定的目录下,通常可以在命令行中直接使用;而本地安装的包则会被放在项目的 node_modules 目录中,只能在当前项目中使用。

全局安装的典型场景是需要跨项目使用的工具,比如 create-react-appvue-cli 这类脚手架工具。本地安装则适用于项目依赖的库,比如 lodashaxios 等。

# 全局安装示例
npm install -g create-react-app

# 本地安装示例
npm install lodash

全局安装的优缺点

优点

  1. 方便命令行工具的使用:全局安装后,可以在任何目录下直接运行命令,比如 create-react-app my-app
  2. 节省磁盘空间:如果多个项目都需要同一个工具,全局安装可以避免重复下载。

缺点

  1. 版本冲突:全局安装的包只有一个版本,如果不同项目需要不同版本的包,可能会出现问题。
  2. 依赖隔离性差:全局安装的包可能会影响其他项目的行为,尤其是当全局包的版本与项目所需版本不一致时。
# 查看全局安装的包
npm list -g --depth 0

本地安装的优缺点

优点

  1. 版本隔离:每个项目可以独立管理自己的依赖版本,避免冲突。
  2. 更好的可移植性:项目的 node_modules 包含了所有依赖,便于迁移和协作。

缺点

  1. 占用更多磁盘空间:每个项目都会有自己的 node_modules,可能导致重复下载。
  2. 命令行工具使用不便:本地安装的工具需要通过 npx./node_modules/.bin/ 来运行。
# 使用 npx 运行本地安装的工具
npx create-react-app my-app

如何选择安装方式

适合全局安装的场景

  • 命令行工具,比如 nodemoneslintwebpack 等。
  • 需要跨项目使用的工具,比如 create-react-app

适合本地安装的场景

  • 项目依赖的库,比如 reactvueexpress 等。
  • 需要精确控制版本的依赖。
# 全局安装 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 目录中。如果使用 yarnpnpm,路径可能会有所不同。

# 查看项目的 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

我的名片

网名:~川~

岗位:console.log 调试员

坐标:重庆市-九龙坡区

邮箱:cc@qdcc.cn

沙漏人生

站点信息

  • 建站时间:2013/03/16
  • 本站运行
  • 文章数量
  • 总访问量
微信公众号
每次关注
都是向财富自由迈进的一步