-g安装和不使用-g安装的区别,本地开发环境和生产环境

📅 2026/7/6 21:26:26 👁️ 阅读次数 📝 编程学习
-g安装和不使用-g安装的区别,本地开发环境和生产环境

本地开发环境和生产环境

-g安装(全局安装)与本地安装(不加-g)的核心区别在于作用范围、存储位置和适用场景。在本地开发环境和生产环境中,两者的使用规范有严格差异,生产环境必须禁止全局安装项目依赖。以下是具体分析:


一、-g与 本地安装的本质区别

1.作用范围与存储位置

表格

特性

全局安装(-g

本地安装(默认)

存储位置

系统级目录(如/usr/local/bin

C:\Users\name\AppData\Roaming\npm

项目内的node_modules目录

作用范围

整个操作系统(所有项目均可调用)

仅当前项目(其他项目无法访问)

依赖记录

不写入package.json

自动写入package.json

典型用途

跨项目 CLI 工具(如create-vite

typescript

项目运行时依赖(如reactlodash

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(如测