---
title: "将我的 Astro 博客从 pnpm 迁移到 Bun"
description: "我成功地将我的 Astro 博客的包管理从 pnpm 迁移到了 Bun。本文概述了所涉及的简单步骤，重点是清理、安装和构建命令，以期获得更快的开发体验。"
pubDate: "2025-04-01"
categories:
  ["Astro", "Bun", "pnpm", "包管理器", "迁移", "JavaScript", "Web 开发"]
---

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

## 迁移步骤概览

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

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

## 第一步：项目清理

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

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

```bash
# 删除 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 安装依赖项。这很简单：

```bash
bun install
```

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

![Bun 安装命令的输出片段](https://img.eigenigma.io/migrating-my-astro-blog-from-pnpm-to-bun/output-snippet-from-the-bun-install-command.png)

## 第三步：构建项目

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

```bash
bun run build # 这相当于 bun astro build
```

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

## 第四步：更新配置（如果需要）

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

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

## 结论

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