将我的 Astro 博客从 pnpm 迁移到 Bun

我最近决定将我的 Astro 博客项目从使用pnpm切换到Bun。主要原因是 Bun 在依赖安装和脚本执行速度方面极具潜力。迁移过程非常简单,本文将分享我所遵循的步骤。

迁移步骤概览

将 Astro 项目从 pnpm 切换到 Bun 主要包括以下几个步骤:

  1. 清理现有项目状态:删除特定于 pnpm 的文档和已安装的依赖项。
  2. 使用 Bun 安装依赖项:利用 bun install 命令。
  3. 使用 Bun 运行构建命令:执行项目的构建脚本。
  4. 更新相关配置文档(如果需要):例如,调整部署脚本。

第一步:项目清理

在引入 Bun 之前,必须移除先前包管理器(在我的例子中是 pnpm)的特定文档以及已安装的依赖项。这可以防止潜在的冲突或意外行为。

我在项目的根目录中运行了以下命令:

# 删除 pnpm、npm 或 yarn 的 lock files
rm pnpm-lock.yaml # 如果使用 npm 或 yarn,则删除 package-lock.json 或 yarn.lock

# 删除已安装的包
rm -rf node_modules

删除 lock files:删除 pnpm-lock.yaml(以及可能存在的 package-lock.json 或 yarn.lock)确保 Bun 仅基于 package.json 中的依赖项生成自己的 lock files (bun.lock)。

删除 node_modules:这保证了使用 Bun 的安装机制进行全新安装。

第二步:使用 Bun 安装依赖项

清理项目后,下一步是使用 Bun 安装依赖项。这很简单:

bun install

我观察到,与 pnpm 相比,Bun 的安装过程感觉明显更快,这也是这次迁移的主要目标之一。Bun v1.2 之后,Bun 创建一个类似于 pnpm-lock.yaml 的 bun.lock 文档以实现兼容性,而不是使用 bun.lockb。

Bun 安装命令的输出片段

第三步:构建项目

大多数 Astro 项目在 package.json 中定义了构建脚本。Bun 可以使用 bun run 来执行这些脚本。为了构建博客,我运行了:

bun run build # 这相当于 bun astro build

此命令执行了 package.json 脚本中定义的构建过程,按预期在 dist/ 目录中生成了静态站点文档。

第四步:更新配置(如果需要)

根据部署设置,可能需要调整某些配置文档。例如,如果通过 Netlify 部署,我会更新 netlify.toml 文档以使用 Bun 命令:

# netlify.toml 调整示例
[build]
  command = "bun run build"
  publish = "dist"

结论

将我的 Astro 博客从 pnpm 迁移到 Bun 是一个简单且快速的过程。主要步骤包括清理旧的包管理器文档、运行 bun install 以及使用 bun run 执行脚本。虽然我还需要评估长期的性能优势,但安装过程中初步的速度提升令人鼓舞。这次切换通过利用 Bun 的一体化能力简化了工具链。