文章目录

Node.js 包管理:npm 与 yarn 命令

发布于 2026-04-02 10:43:27 · 浏览 21 次 · 评论 0 条

Node.js 包管理:npm 与 yarn 命令

在使用 Node.js 开发项目时,安装、更新和管理第三方代码库(即“包”) 是每天都要做的事。目前最主流的两种工具是 npmyarn。它们功能高度重合,但命令写法和行为细节略有不同。本文直接列出你必须掌握的核心命令,并说明两者差异,让你在任何项目中都能快速上手。


初始化一个新项目

无论是用 npm 还是 yarn,第一步都是创建一个项目描述文件 package.json

  1. 打开终端,进入你的项目文件夹。

  2. 执行初始化命令

    • 使用 npm:

      npm init -y
    • 使用 yarn:

      yarn init -y

    -y 参数表示跳过所有交互提问,直接生成默认配置的 package.json 文件。

  3. 检查结果:当前目录下会多出一个 package.json 文件,里面包含项目名称、版本等基本信息。


安装依赖包

开发中需要引入外部库(如 lodashexpress 等),这时就要安装依赖。

安装生产依赖(项目运行必需)

  1. 执行安装命令

    • npm:

      npm install express

      或简写为:

      npm i express
    • yarn:

      yarn add express
  2. 观察变化

    • 包会被下载到 node_modules/ 文件夹。
    • package.json 中的 dependencies 字段会新增 "express": "版本号"
    • npm 会生成或更新 package-lock.json;yarn 会生成或更新 yarn.lock

安装开发依赖(仅开发时需要,如测试工具)

  1. 执行带 -D--dev 的命令

    • npm:

      npm install eslint --save-dev

      或简写:

      npm i eslint -D
    • yarn:

      yarn add eslint --dev
  2. 验证结果package.json 中的 devDependencies 字段会新增该包。


安装项目已有依赖

当你从 Git 克隆一个已有项目时,通常只有 package.json 和锁文件,没有 node_modules

  1. 执行安装命令

    • npm:

      npm install
    • yarn:

      yarn install

      或简写为:

      yarn
  2. 工具行为

    • 两者都会读取各自的锁文件(package-lock.jsonyarn.lock)来精确还原依赖版本
    • 如果你删除了 node_modules,这个命令能重新构建它。

卸载包

不再需要某个包时,要彻底移除它。

  1. 执行卸载命令

    • npm:

      npm uninstall lodash

      或简写:

      npm un lodash
    • yarn:

      yarn remove lodash
  2. 确认效果

    • 该包从 node_modules/ 中删除。
    • package.json 和锁文件中的记录也被清除。

全局安装工具

有些命令行工具(如 nodemontypescript 编译器)需要全局安装,以便在任何目录使用。

  1. 执行全局安装

    • npm:

      npm install -g nodemon
    • yarn:

      yarn global add nodemon
  2. 注意差异

    • npm 的全局包通常放在系统路径(如 /usr/local/bin)。
    • yarn 的全局包位置可通过 yarn global bin 查看,有时需手动将该路径加入系统 PATH 才能直接使用命令。

查看和更新包

保持依赖最新可修复安全漏洞或获取新功能。

查看过时的包

  • npm:

    npm outdated
  • yarn:

    yarn outdated

更新单个包

  1. 指定包名更新

    • npm:

      npm update express
    • yarn:

      yarn upgrade express

更新所有包

  • npm:

    npm update
  • yarn:

    yarn upgrade

重要提示update / upgrade 默认只更新到符合 package.json 中版本范围(如 ^1.2.3)的最新版,不会跨大版本。若要强制升级到最新大版本,需重新执行 addinstall 命令。


运行脚本

package.json 中的 scripts 字段定义了常用命令(如启动、测试)。两者调用方式一致。

  1. 查看可用脚本:打开 package.json,找到 scripts 部分,例如:

    "scripts": {
      "start": "node server.js",
      "test": "jest"
    }
  2. 执行脚本

    • npm:

      npm run start

      对于 startteststop 等内置脚本,可省略 run

      npm start
    • yarn:

      yarn start

      yarn 无需写 run,所有脚本都直接跟名字。


锁文件机制对比

虽然 npmyarn 都能管理依赖,但底层机制影响协作一致性。

特性 npm (package-lock.json) yarn (yarn.lock)
是否记录完整依赖树
是否保证团队安装完全一致 是(v5+)
安装速度 较慢(尤其早期版本) 较快(并行下载)
离线安装支持 需额外配置 原生支持(缓存机制强)

实际开发中,团队应统一使用同一种工具,避免同时提交两种锁文件导致冲突。


切换工具的注意事项

如果你接手一个项目,发现它用的是另一种包管理器:

  1. 不要混用:如果项目有 yarn.lock,就用 yarn;如果有 package-lock.json,就用 npm
  2. 删除对方锁文件:若决定切换工具,先删除原有的锁文件和 node_modules,再用新工具重新安装。
  3. 提交新锁文件:切换后,务必提交新生成的锁文件到 Git,确保团队一致。

常见问题处理

安装卡住或超时

  • npm:换国内镜像源

    npm config set registry https://registry.npmmirror.com
  • yarn:换源

    yarn config set registry https://registry.npmmirror.com

清除缓存

  • npm:

    npm cache clean --force
  • yarn:

    yarn cache clean

强制重新安装

  1. 删除 node_modules 和锁文件

    rm -rf node_modules package-lock.json  # npm 用户
    rm -rf node_modules yarn.lock          # yarn 用户
  2. 重新安装

    npm install    # 或 yarn

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文