- Published on
node.js全局和本地安装的区别
- Authors
- Name
在 Node.js 的 npm 和 npx 工具中,“全局”和“本地”是用来描述包的安装位置和作用范围的。它们的主要区别如下:
1. 本地安装 (Local Installation)
- 定义:将包安装在项目的当前目录下,具体来说是放置在项目目录下的
node_modules文件夹中。 - 特点:
- 作用范围:仅限于当前项目。
- 依赖管理:安装的信息会记录在
package.json的dependencies或devDependencies字段中。 - 命令可用性:本地安装的 CLI 工具默认不能直接从命令行运行(除非使用
npx或在项目中设置路径)。
- 适用场景:项目依赖,例如
express、lodash等需要在代码中使用的库。
示例
# 本地安装 lodash
npm install lodash
# 本地安装 eslint,作为开发依赖
npm install eslint --save-dev
本地安装后的文件结构:
my-project/
├── node_modules/
│ └── lodash/
├── package.json
├── package-lock.json
2. 全局安装 (Global Installation)
- 定义:将包安装在系统的全局环境中,使其可以在任何地方直接使用。
- 特点:
- 作用范围:对系统中的所有项目都可用。
- 命令可用性:全局安装的 CLI 工具可以直接通过命令行运行。
- 依赖管理:不会记录在项目的
package.json中,适用于工具而非项目依赖。
- 适用场景:全局命令行工具,例如
typescript(tsc)、http-server、npm本身。
示例
# 全局安装 TypeScript
npm install -g typescript
# 安装后可直接使用 tsc 命令
tsc --init
全局安装后的文件位置:
- macOS/Linux:
/usr/local/lib/node_modules/或用户目录下的.npm-global。 - Windows:通常是
%AppData%\npm\node_modules\。
可以通过以下命令查看全局安装目录:
npm root -g
3. 全局安装和本地安装的核心差异
| 特性 | 本地安装 | 全局安装 |
|---|---|---|
| 安装位置 | 当前项目的 node_modules | 系统的全局目录(如 /usr/local) |
| 作用范围 | 仅限于当前项目 | 对所有项目都可用 |
| 是否记录依赖 | 记录在项目的 package.json 中 | 不记录在 package.json 中 |
| 命令行工具使用 | 默认不能直接用命令行运行 | 可直接运行 |
| 典型用途 | 项目依赖或项目级 CLI | 通用命令行工具 |
4. 如何选择全局或本地?
本地安装:
- 对于项目依赖库和项目相关工具,通常优先本地安装。
- 例如:
react、next、eslint、typescript。
全局安装:
- 如果你希望在任何目录里都能直接调用某个通用 CLI,可以考虑全局安装。
- 例如:
http-server这类和具体项目耦合较弱的工具。
特殊情况:
很多 CLI 工具其实更适合通过 npx 临时运行,这样既不用全局安装,也不会污染项目依赖,例如:
# 临时使用 create-react-app
npx create-react-app my-app
实际建议
在现代前端/Node.js 项目里,一个比较稳妥的经验是:
- 项目依赖和项目 CLI,优先本地安装
- 偶尔使用的脚手架工具,优先
npx - 只有真正需要“全局可用”的工具,再考虑全局安装
这样更有利于版本一致性,也更方便团队协作。