-g安装和不使用-g安装的区别,本地开发环境和生产环境
本地开发环境和生产环境
-g安装(全局安装)与本地安装(不加-g)的核心区别在于作用范围、存储位置和适用场景。在本地开发环境和生产环境中,两者的使用规范有严格差异,生产环境必须禁止全局安装项目依赖。以下是具体分析:
一、-g与 本地安装的本质区别
1.作用范围与存储位置
表格
特性 | 全局安装( ) | 本地安装(默认) |
存储位置 | 系统级目录(如 或 ) | 项目内的 |
作用范围 | 整个操作系统(所有项目均可调用) | 仅当前项目(其他项目无法访问) |
依赖记录 | 不写入 | 自动写入 |
典型用途 | 跨项目 CLI 工具(如 、 | 项目运行时依赖(如 |
2.关键差异说明
- 全局安装:
- 适合独立于项目的命令行工具(例如
pnpm add -g typescript后,终端任何位置都能运行tsc)。 - 系统中同一包只能存在一个版本,易引发版本冲突(如项目 A 需 TypeScript 4.x,项目 B 需 5.x)。
- 适合独立于项目的命令行工具(例如
- 本地安装:
- 依赖被隔离在项目目录中,不同项目可使用同一包的不同版本。
- 必须通过
package.json精确声明,确保团队和生产环境依赖一致。
二、本地开发环境 vs 生产环境的使用规范
1.本地开发环境
(1)允许全局安装的场景
- 跨项目 CLI 工具:
pnpm add -g typescript # 使 tsc 命令全局可用 pnpm add -g create-vite # 跨项目初始化脚手架- 原因:避免每个项目重复安装开发工具,提升初始化效率。
- 风险控制:仅限明确需要命令行调用的工具(如编译器、脚手架)。
(2)必须本地安装的场景
- 项目运行时依赖:
pnpm add react # 安装到 dependencies pnpm add -D eslint # 安装到 devDependencies- 原因:
- 确保依赖版本与
package.json一致,避免“幽灵依赖”(代码引用了未声明的依赖)。 - 本地开发需完整包含
devDependencies(如测
- 确保依赖版本与
