HIGH_FREQUENCY_MODE

NextBlog
NEXT.

下一个博客,记录精彩生活

LIVE_STREAM_CONNECTED

NPM、Yarn、PNPM 包管理器指南

A

Mastermind

admin

Dimension

Linux

Timestamp

2025年12月21日

Node.js 生态的三大包管理器对比与使用指南。

NPM

Node.js 默认包管理器。

基础命令

# 初始化项目
npm init
npm init -y                 # 跳过问答

# 安装依赖
npm install                 # 安装所有依赖
npm install package         # 安装包
npm install package@1.0.0   # 指定版本
npm install package -D      # 开发依赖
npm install package -g      # 全局安装

# 卸载
npm uninstall package
npm uninstall package -g

# 更新
npm update
npm update package

# 查看
npm list                    # 已安装包
npm list -g                 # 全局包
npm outdated                # 过期包
npm view package            # 包信息

# 运行脚本
npm run dev
npm run build
npm start                   # 运行 start 脚本
npm test                    # 运行 test 脚本

# 清理缓存
npm cache clean --force

配置

# 查看配置
npm config list

# 设置镜像
npm config set registry https://registry.npmmirror.com

# 恢复官方源
npm config set registry https://registry.npmjs.org

# 查看当前源
npm config get registry

package.json

{
  "name": "my-app",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "start": "node dist/index.js",
    "test": "vitest"
  },
  "dependencies": {
    "express": "^4.18.0"
  },
  "devDependencies": {
    "typescript": "^5.0.0"
  }
}

Yarn

Facebook 开发的包管理器,更快更稳定。

安装

npm install -g yarn

基础命令

# 初始化
yarn init
yarn init -y

# 安装依赖
yarn                        # 安装所有依赖
yarn add package            # 安装包
yarn add package@1.0.0      # 指定版本
yarn add package -D         # 开发依赖
yarn global add package     # 全局安装

# 卸载
yarn remove package
yarn global remove package

# 更新
yarn upgrade
yarn upgrade package
yarn upgrade-interactive    # 交互式更新

# 查看
yarn list
yarn global list
yarn outdated
yarn info package

# 运行脚本
yarn dev
yarn build
yarn start

# 清理缓存
yarn cache clean

配置

# 设置镜像
yarn config set registry https://registry.npmmirror.com

# 查看配置
yarn config list

Yarn 2+ (Berry)

# 启用 Yarn 2
yarn set version berry

# 安装依赖
yarn install

# PnP 模式(零安装)
yarn config set nodeLinker pnp

PNPM

高效的包管理器,节省磁盘空间。

安装

npm install -g pnpm

基础命令

# 初始化
pnpm init

# 安装依赖
pnpm install                # 安装所有依赖
pnpm add package            # 安装包
pnpm add package@1.0.0      # 指定版本
pnpm add package -D         # 开发依赖
pnpm add package -g         # 全局安装

# 卸载
pnpm remove package
pnpm remove package -g

# 更新
pnpm update
pnpm update package
pnpm update -i              # 交互式更新

# 查看
pnpm list
pnpm list -g
pnpm outdated

# 运行脚本
pnpm dev
pnpm build
pnpm run start

# 清理
pnpm store prune            # 清理未使用的包

配置

# 设置镜像
pnpm config set registry https://registry.npmmirror.com

# 查看存储位置
pnpm store path

Workspace(Monorepo)

pnpm-workspace.yaml

packages:
  - 'packages/*'
  - 'apps/*'
# 在所有包中运行命令
pnpm -r run build

# 在指定包中运行
pnpm --filter package-name run build

# 安装依赖到指定包
pnpm add lodash --filter package-name

命令对比

功能 NPM Yarn PNPM
安装所有依赖 npm install yarn pnpm install
添加依赖 npm install pkg yarn add pkg pnpm add pkg
添加开发依赖 npm install pkg -D yarn add pkg -D pnpm add pkg -D
全局安装 npm install pkg -g yarn global add pkg pnpm add pkg -g
卸载 npm uninstall pkg yarn remove pkg pnpm remove pkg
更新 npm update yarn upgrade pnpm update
运行脚本 npm run dev yarn dev pnpm dev
清理缓存 npm cache clean yarn cache clean pnpm store prune

Lock 文件

包管理器 Lock 文件
NPM package-lock.json
Yarn yarn.lock
PNPM pnpm-lock.yaml

.npmrc 配置

# 镜像源
registry=https://registry.npmmirror.com

# 私有源
@myorg:registry=https://npm.myorg.com

# 代理
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080

# 保存精确版本
save-exact=true

# 自动安装 peer dependencies
auto-install-peers=true

版本号规则

{
  "dependencies": {
    "exact": "1.0.0",       // 精确版本
    "patch": "~1.0.0",      // 允许补丁更新 1.0.x
    "minor": "^1.0.0",      // 允许次版本更新 1.x.x
    "any": "*",             // 任意版本
    "range": ">=1.0.0 <2.0.0"
  }
}

常用技巧

查看包大小

# 使用 bundlephobia
npx bundlephobia package-name

检查安全漏洞

npm audit
npm audit fix

yarn audit

pnpm audit

发布包

# 登录
npm login

# 发布
npm publish

# 发布 scoped 包
npm publish --access public

链接本地包

# 在包目录
npm link

# 在项目目录
npm link package-name

# 取消链接
npm unlink package-name

选择建议

  • NPM:默认选择,生态最完整
  • Yarn:需要更快速度和稳定性
  • PNPM:磁盘空间敏感、Monorepo 项目

总结

三个包管理器核心功能相似,主要区别在于性能和磁盘占用。PNPM 通过硬链接节省空间,Yarn 提供更好的锁文件管理,NPM 是默认标准。根据项目需求选择即可。

评论

加载评论中...
Spirit Sync

"正在同步你的多巴胺频率,建立高维链接..."