跳转至

Node.js 项目依赖管理最佳实践

预计阅读时长 : 6 分钟

在现代 Node.js 项目中,使用合适的工具管理语言版本和依赖是开发效率和团队协作的重要保障。

使用 nvm、Corepack 和 pnpm 的组合,可以实现高效、灵活和一致的 Node.js 项目环境管理。它们的分工明确且配合紧密:

  • nvm 解决 Node.js 版本管理问题。
  • Corepack 提供包管理器版本的一致性保障。
  • pnpm 提供高效的依赖安装和管理机制。

这种现代化的工具链非常适合个人开发者和团队协作,是 Node.js 项目的推荐最佳实践。

工具链简介

  1. nvm(Node Version Manager)

    • 主要功能:管理和切换 Node.js 的不同版本。
    • 适用场景:满足不同项目对 Node.js 版本的需求,确保运行时的一致性。
    • 对应于 Python 环境管理工具中的 pyenv。

  2. Corepack

    • 主要功能:管理包管理器(如 pnpm、yarn、npm)的版本。
    • 适用场景:锁定包管理器版本,确保团队成员和 CI/CD 环境的一致性。
    • 内置于 Node.js(v16.13 及以上版本)。

  3. pnpm

    • 主要功能:高效管理项目依赖,具有全局缓存和符号链接机制。
    • 优势特点:节省磁盘空间,提升安装速度。
    · 自动生成 pnpm-lock.yaml,锁定依赖版本。
    • 对应于 Python 的 poetry。

最佳实践

以上三个工具,在最佳实践中的协作逻辑流程如下:

graph TD
    1[nvm: 安装并切换 Node.js 版本] --> 2[Corepack: 确定包管理器版本]
    2 --> 3[Corepack: 根据 packageManager 字段激活 pnpm]
    3 --> 4[pnpm: 安装项目依赖]
    4 --> 5[pnpm: 使用缓存机制生成锁文件]

安装 nvm 并管理 Node.js 版本

首先,查看 nvm 官方 GitHub ⧉ 说明并安装 nvm。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

然后,查看根目录中是否有 .nvmrc 文件:

22.2.1

如果有,则使用以下命令切换项目 Node.js 版本:

nvm install && nvm use

如果没有,则进入项目根目录,查看 package.json 文件中 Node.js 要求:

1
2
3
"engines": {
    "node": ">=22"
}

根据要求安装并使用指定版本:

nvm install 22 && nvm use 22

启用 Corepack 并管理 pnpm 版本

Corepack 是 Node.js 内置的工具,从 v16.13 开始默认包含。

当首次使用 Corepack 时,需要全局启用:

corepack enable

然后,检查项目中指定的 pnpm 版本:

"packageManager": "pnpm@9.1.0"

并使用 corepack prepare 激活指定版本的 pnpm:

corepack prepare

使用 pnpm 管理依赖

pnpm 是高性能的 Node.js 包管理器,相对 npm 和 yarn,它能利用符号链接和缓存机制,提升安装速度和磁盘空间利用率。

安装项目依赖

安装项目依赖时,使用以下命令:

1
2
3
pnpm i  # 基础安装
pnpm i --frozen-lockfile  # 严格按照 lock 文件安装
pnpm i --dev  # 安装开发依赖
  • 如果已有 pnpm-lock.yaml 文件,pnpm 会根据锁文件安装精确版本。
  • 如果没有,pnpm 会解析 package.json 中的依赖并生成新的锁文件。

删除项目依赖

删除项目依赖时,使用以下命令:

pnpm rm <package-name>  # 删除单个包
pnpm rm <package1> <package2>  # 删除多个包

更新项目依赖

更新项目依赖时,使用以下命令:

pnpm up

检查安全性

检查项目依赖安全性时,使用以下命令:

pnpm audit

运行项目

运行项目时,使用以下命令:

pnpm dev