在 Linux 上维护 Node.js 项目时,真正容易出问题的往往不是代码本身,而是依赖怎么装、怎么分、怎么更新。本文按实际使用顺序整理了 npm 和 Yarn 的常见操作,并补上版本锁定、生产与开发依赖划分、异常处理这些容易被忽略的判断点,方便你在新项目初始化、团队协作或部署前快速对照。
先确认 Linux 环境里的 Node.js 与 npm 是否可用
开始管理依赖前,先检查系统里是否已经安装 Node.js 和 npm。通常 npm 会随 Node.js 一起安装,可以直接在终端验证版本:
node -v # 查看 Node.js 版本
npm -v # 查看 npm 版本
如果系统还没有安装,可以从 Node.js 官网下载适合当前 Linux 发行版的安装包,例如 .deb 或 .rpm;也可以直接使用发行版包管理器安装,例如:
sudo apt install nodejs npm
这一步看似基础,但后续所有依赖安装、更新和锁版本操作都建立在这里之上。
npm 依赖管理的常用流程
初始化项目并生成 package.json
package.json 是 Node.js 项目的核心清单文件,记录项目名称、版本、脚本以及依赖信息。进入项目根目录后,可以先执行:

npm init # 按提示填写项目名称、版本、描述等信息
如果只是想快速生成默认配置,也可以直接使用:
npm init -y
对于刚创建的新项目,这通常是依赖管理的第一步。
安装依赖时先分清生产依赖和开发依赖
Node.js 项目里最容易混淆的,就是哪些包应该进入生产环境,哪些只在开发时使用。
生产依赖用于项目运行本身,例如 Express 这样的 Web 框架:
npm install --save
# 简写为
npm install
安装后,依赖会写入 package.json 的 dependencies 字段,例如 "express": "^4.17.1"。
开发依赖只在开发阶段使用,例如热更新工具 nodemon:
npm install --save-dev
# 简写为
npm install -D
这类包会写入 devDependencies,例如 "nodemon": "^2.0.15"。
实际部署时,这两个字段的区分会直接影响安装结果、镜像体积和部署效率。
已有项目如何一次性装回全部依赖
如果仓库里已经存在 package.json,通常不需要逐个安装依赖,直接执行下面的命令即可按依赖列表恢复环境:
npm install
文中提到,部分 npm 版本支持通过 --dev 参数同时安装开发依赖。对于接手他人项目或在新机器上复现环境,这一步最常用。
更新和删除依赖时要看版本范围
依赖不是装完就结束,后续更新和清理也很重要。
更新指定依赖:
npm update
更新全部依赖:
npm update
更新行为会参考 package.json 中设置的版本范围,例如 ^、~,也就是说它通常会升级到“兼容范围内”的新版本,而不是无条件拉到所有最新版本。
如果某个包已经不再使用,可以直接卸载:
npm uninstall --save
# 删除开发依赖时使用
npm uninstall --save-dev
执行后,对应依赖会从 package.json 中移除,同时 node_modules 里的包文件也会一并删除。
需要替代方案时,可以使用 Yarn
如果你希望使用另一套包管理工具,Yarn 也是 Linux 下常见选择。原文提到,它由 Facebook 推出,特点是安装速度更快、依赖树更稳定。
先安装 Yarn 并验证版本
可以直接通过 npm 全局安装 Yarn:
npm install -g yarn
安装完成后,再用下面的命令确认版本:
yarn -v
Yarn 的基础命令与 npm 基本对应
如果已经熟悉 npm,切换到 Yarn 的成本并不高,常用命令如下:
yarn init # 按提示填写信息,或使用 yarn init -y 快速生成
yarn add # 生产依赖
yarn add --dev # 开发依赖
yarn install # 或简写为 yarn
yarn upgrade # 更新指定依赖
yarn upgrade # 更新所有依赖
yarn remove
Yarn 还会生成 yarn.lock 文件,作用类似 npm 的 package-lock.json,都是为了锁定具体版本,减少团队协作或部署时的环境漂移。
依赖管理里最容易忽略的 4 个关键点
1. 不要混用 dependencies 和 devDependencies
dependencies 面向生产运行环境,devDependencies 面向开发阶段。像 Express 这样的运行时框架应放进前者,而 nodemon 这类开发工具应放进后者。分类错误虽然不一定马上报错,但会在部署时增加不必要的依赖负担。

2. 锁文件不要随意手改
无论是 npm 生成的 package-lock.json,还是 Yarn 生成的 yarn.lock,本质上都是版本锁定文件。它们的意义在于保证团队成员、本地环境和部署环境尽量使用同一组依赖版本,因此不建议手动修改。
3. 定期检查过时依赖
依赖长期不更新,除了功能兼容问题,还可能带来安全漏洞风险。可以定期执行以下命令检查过时包:
npm outdated
yarn outdated
尤其是在上线前、升级 Node.js 版本前,或者准备合并长期分支时,这一步很有必要。
4. 安装异常时先排查缓存
如果安装过程出现异常,缓存损坏是比较常见的原因之一。此时可以尝试清理缓存后重新安装:
npm cache clean --force
yarn cache clean
很多看起来难以复现的安装问题,最后都能通过这一步排查出来。
怎么选 npm 还是 Yarn
如果你的目标是尽快开始、跟随 Node.js 默认生态,npm 已经足够覆盖初始化、安装、更新、删除、版本锁定等日常需求;如果你更在意命令风格、安装体验和锁文件管理,也可以选择 Yarn。真正关键的并不是工具名称,而是是否把依赖分类、锁文件、更新检查和缓存处理这些基础动作做规范。







