- Published on
node.js全局和本地安装的区别
- Authors
- Name
npm
和 npx
工具中,“全局”和“本地”是用来描述包的安装位置和作用范围的。它们的主要区别如下:
在 Node.js 的 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. 全局 vs 本地 对比
特性 | 本地安装 | 全局安装 |
---|---|---|
安装位置 | 当前项目的 node_modules | 系统的全局目录(如 /usr/local ) |
作用范围 | 仅限于当前项目 | 对所有项目都可用 |
是否记录依赖 | 记录在项目的 package.json 中 | 不记录在 package.json 中 |
命令行工具使用 | 默认不能直接用命令行运行 | 可直接运行 |
典型用途 | 项目依赖(如框架、库) | 命令行工具(如 TypeScript、npx 等) |
4. 如何选择全局或本地?
本地安装:
- 对于项目依赖库和工具,通常优先本地安装。
- 例如:
express
、react
、webpack
等库或工具。
全局安装:
- 如果需要频繁使用某个命令行工具,或该工具与特定项目无关,可以全局安装。
- 例如:
typescript
、eslint
、http-server
。
特殊情况:
有些工具可以通过 npx
临时运行,这样既避免全局安装,又无需本地安装,例如:
# 临时使用 create-react-app
npx create-react-app my-app
总结:**本地安装用于项目,**方便依赖管理和版本控制;**全局安装用于工具,**方便全局命令使用。