Skip to content

包管理生态

JavaScript 包管理器简史

时期工具特点
2010npm v1嵌套 node_modules,路径爆炸
2014npm v3扁平化,但幽灵依赖
2016Yarn锁文件、并行安装、离线缓存
2017npm v5借鉴 Yarn,加入 package-lock.json
2019pnpm硬链接 + 内容寻址存储,磁盘省 50%+
2020Yarn 2/3Plug'n'Play,零 node_modules

核心区别:

  • npm:最早,生态最大,v5 后体验改善
  • Yarn:锁文件 + 确定性安装 + workspace 支持好
  • pnpm:严格的依赖隔离(不会幽灵依赖),磁盘最省,monorepo 友好

npx vs npm vs cnpm vs pnpm

  • npm:包管理器,安装和管理依赖
  • npx:npm 自带的包执行器,直接运行未全局安装的包
  • cnpm:淘宝镜像的 npm 客户端,安装快但锁文件可能不一致,不推荐新项目使用
  • pnpm:高性能、节省磁盘、严格依赖隔离,推荐

NRM — NPM 镜像源管理

bash
npx nrm use taobao   # 淘宝源已迁移至 npmmirror.com,旧 URL 已废弃
npx nrm test          # 测速
npx nrm ls            # 列出所有源

一键切换 npm 源。注意淘宝源 URL 已从 registry.npm.taobao.org 迁移至 registry.npmmirror.com,旧版 nrm 默认列表可能未更新,需手动添加。。

npm 本地包引用

需要维护私有包或本地改动时:

  1. npm link — 本地开发调试
  2. file:../my-package — 在 package.json 中直接引用本地路径
  3. npm pack — 打 tgz 包后安装

concurrently — 本地开发并行执行

json
{
  "scripts": {
    "dev": "concurrently \"npm run serve\" \"npm run electron\""
  }
}

配合 wait-on 可按序启动:

json
"dev": "concurrently \"npm run electron\" \"wait-on http://localhost:8080 && npm run open\""

Released under the MIT License.