以观书法
108.85M · 2026-02-05
今天我们非常兴奋地宣布 Rolldown 1.0 的候选版本(Release Candidate,RC)。
TL;DR:Rolldown 是一个用 Rust 编写的 JavaScript/TypeScript 打包器。在保持与 Rollup 插件 API 兼容的同时,它比 Rollup 快 10–30 倍。本次 RC 标志着 API 进入稳定阶段:在 1.0 正式版发布前,我们不计划引入破坏性变更。我们鼓励你在自己的项目中试用,并在遇到问题时到 GitHub 上反馈:github.com/rolldown/ro…。
Rolldown 是一个高性能的 JavaScript 打包器,目标是成为 Vite 的下一代默认打包器。它试图同时拿到两边的优势:既有 esbuild 的速度,又保留了 Rollup 的生态兼容性。
除此之外,Rolldown 还提供了一些两者都没有的能力,例如 output.codeSplitting ——它能让你获得类似 webpack 那样更“细颗粒度”的分包控制能力。
@rollup/plugin-commonjs@rollup/plugin-node-resolveoutput.codeSplitting 提供 webpack 风格的 chunk 控制(这是 Rollup 所不具备的)完整清单可查看:Notable Features。
安装 Rolldown:
npm install -D rolldown
# 或
pnpm add -D rolldown
# 或
yarn add -D rolldown
# 或
bun add -D rolldown
创建配置文件:
import { defineConfig } from 'rolldown'
export default defineConfig({
input: 'src/main.js',
output: {
file: 'dist/bundle.js',
},
})
运行构建:
npx rolldown -c
# 或
pnpm rolldown -c
# 或
yarn rolldown -c
# 或
bunx rolldown -c
这次 Release Candidate 代表 API 稳定:在 1.0 正式版发布前,Rolldown 的公共 API 不计划再做破坏性变更。
关于实验特性的一点说明:目前仍有一部分能力处于 experimental 状态,例如:
实验特性会在文档中明确标注;即使 Rolldown 进入 1.0 之后,它们仍可能发生破坏性变更。如果要在生产环境使用,建议先做充分验证。
从 beta.1 以来,我们已经合入了超过 3,400 个提交:749 个功能、682 个 Bug 修复、109 个性能优化,以及 166 个文档更新。
我们将多个 Vite 内部插件移植到了 Rust,以提升常见场景的性能。同时我们也在 rolldown-vite 以及后续的 Vite 8 beta 中持续验证稳定性。
109 个性能相关提交包括:SIMD JSON 转义、并行 chunk 生成、符号重命名优化、更快的 sourcemap 处理等。
除了 Rolldown 本身,提供转换器与解析器能力的 Oxc 也变得更快了。
我们改进了分包算法,让产出的 chunk 数量更少。对于那些动态导入、但实际引用的是“已经加载过的模块”的场景,现在会直接内联;而一些小的 wrapper chunk 在可能时也会与目标 chunk 合并。
我们继续扩大对 Rollup 与 esbuild 的兼容覆盖。当前 Rolldown 已通过 900+ 个 Rollup 测试和 670+ 个 esbuild 测试。
新补齐的一些 Rollup 选项示例:
output.dynamicImportInCjs:控制在 CJS 输出里如何渲染动态导入watch.onInvalidate:模式下,文件触发重建时的 hookoutput.minifyInternalExports:压缩内部导出名以减小体积我们还增加了对 Node.js module.exports 的 ESM 导出形式的支持,以对齐 Node.js 关于 require(ESM) 的新行为:
nodejs.org/docs/latest…
我们将一些 API 从 experimental 提升,并对齐默认值。例如:
output.strictExecutionOrder:从 experimental 中移出output.codeSplitting:从 output.advancedChunks 更名而来tsconfig 自动发现:默认启用preserveEntrySignatures:默认值调整为 'exports-only'checks.pluginTimings 提供插件耗时诊断更好的错误提示(带文档链接)、用于崩溃上报的自定义 panic hook,以及与 Rollup 对齐的一批新诊断(如 CIRCULAR_REEXPORT、CANNOT_CALL_NAMESPACE)。
我们补齐了此前缺失的文档:
我们的后续路径大致是:
Rolldown 集成进 Vite 后,会统一构建管线,消除当前“两个打包器并存”的架构,从而让开发与生产的行为更加一致。
需要注意的是:Vite 8 很可能会先于 Rolldown 1.0 发布,因为 Rolldown 1.0 的部分目标并不是 Vite 集成的前置条件。
Rolldown 1.0 RC 是 150+ 位贡献者 共同努力的成果。感谢每一位贡献代码、提交 issue、以及帮忙传播的人。
同时我们也非常感谢启发 Rolldown 的项目:
Rolldown 已经准备好接受真实世界的检验。把它用在你的项目里,看看效果如何。
如果你遇到问题,请到 GitHub 上提一个 issue:github.com/rolldown/ro…。你在 RC 阶段给出的反馈,会直接影响到 1.0 的最终形态。
期待看到你用 Rolldown 构建出的作品。
前端构建工具开始从“能用”转向“长期可托付”。Rolldown 用 Rust 重写打包核心,在速度、分包控制和生态兼容之间给出了一个更稳的工程解法,但真正落地时,团队还需要重新审视构建链路、插件依赖和发布节奏的整体效率。实践中,可以结合 RollCode 低代码平台、私有化部署、自定义组件、静态页面发布(SSG + SEO),把新一代构建能力更平滑地接入现有工程体系。