返回项目目录
开发工具精选项目

Rolldown

使用 Rust 构建、兼容 Rollup API,并为 Vite 提供统一高性能打包核心的 JavaScript Bundler。

主要语言Rust
开源许可MIT
项目类型开发工具
维护状态活跃维护
OVERVIEW

项目概述

Rolldown 将 Rollup 的插件生态和 Tree Shaking 能力与 esbuild 级别的内建转换、解析和打包性能结合起来。它既是 Vite 8+ 的统一 Bundler,也可以独立用于应用或库构建。

Rolldown 是采用 MIT 许可证的 Rust JavaScript/TypeScript Bundler,由 VoidZero 团队和开源社区维护。它的首要目标是成为 Vite 的统一底层打包器,用一套核心替代过去生产构建中的 Rollup 与部分 esbuild 职责,同时保持对 Rollup/Vite Plugin API 的高度兼容。Rolldown 也可以通过 CLI、配置文件、JavaScript API 和 Watch API 独立使用,适合希望获得 Rollup 风格输出控制、又重视大型模块图性能的构建任务。

当前版本Rolldown 1.2.0
核心实现Rust + Oxc
主要定位Vite 统一 Bundler
FEATURES

主要特点

Rolldown 把高性能解析与转换、Rollup 兼容插件和细粒度 Chunk 控制放入同一打包核心。

01

Rust 高性能核心

解析、依赖图、Tree Shaking、Chunk 生成和输出阶段主要由 Rust 实现,可并行处理大型模块图。

02

Rollup 兼容 API

配置、rolldown()、watch() 和 Plugin Hook 尽量对齐 Rollup,让现有配置和插件更容易迁移。

03

为 Vite 设计

Rolldown 作为 Vite 8+ 的统一 Bundler,减少开发依赖优化与生产构建使用不同引擎产生的行为差异。

04

内建 TypeScript 与 JSX 转换

通过 Oxc 处理 TypeScript、JSX、语法降级和常见转换,许多项目不再需要额外 Babel 或转换插件。

05

ESM 与 CommonJS 互操作

内建 Node.js 风格模块解析和 ESM/CJS 互操作,减少 @rollup/plugin-commonjs 与 node-resolve 等基础插件需求。

06

Tree Shaking

基于静态模块分析消除未使用导出,并保留 Rollup 擅长的 Scope Hoisting 和小体积输出方向。

07

代码拆分与 Chunk 控制

支持动态导入、多个入口、Manual Chunks 与高级代码拆分选项,兼顾缓存、并行请求和共享依赖。

08

Rollup/Vite 插件生态

大多数标准插件可以复用,并支持 Hook Filter,减少无关模块进入 JavaScript 插件所带来的跨语言调用成本。

09

内建常用构建能力

提供 alias、define、inject、JSON、Node.js 解析、平台预设、CSS 打包和压缩等能力,减少基础插件数量。

10

多输出与并行配置

同一输入可生成 ESM、CJS、IIFE 等格式;配置数组还可以并行执行多个独立构建。

11

CLI、API 与 Watch

既可以用命令行快速打包,也可以通过配置文件、JavaScript Bundler API 和 Watch API 集成内部工具链。

USE CASES

适用场景

需要 Vite 生态兼容、Rollup 风格 API 和更高吞吐量时,可以直接或通过上层工具采用 Rolldown。

Vite 应用生产构建

大多数应用无需直接配置 Rolldown,通过 Vite 获得开发服务器、HMR、插件与优化生产构建的完整体验。

Rollup 项目迁移

希望保留 Rollup 配置和插件模型,同时改善大型模块图构建速度时,可以先在 CI 中进行产物对比试验。

JavaScript 和 TypeScript 库

能够输出 ESM、CJS 等多种格式并控制 external、Chunk 和 Tree Shaking;常规库项目也可使用基于 Rolldown 的 tsdown。

多入口工具与 SDK

适合为浏览器、Node.js、Worker 或不同消费方生成多个入口和输出格式。

构建框架与开发工具

JavaScript API、Plugin Hook 和内建转换能力可作为框架、CLI 或企业内部构建平台的底层引擎。

大型 ESM 模块图

当 Rollup 构建耗时随模块数量明显上升,并且仍需要细粒度 Tree Shaking 和 Chunk 控制时,Rolldown 值得测试。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Rolldown 擅长的地方

  • Rust 并行核心面向大型模块图提供较高构建吞吐量
  • Rollup 与 Vite Plugin API 兼容,能够复用大量现有生态
  • TypeScript、JSX、CommonJS、Node 解析和 Define 等能力内建
  • Tree Shaking、Scope Hoisting 与代码拆分兼顾性能和产物体积
  • 统一 Vite 开发与生产底层,减少多个构建引擎之间的语义差异
  • CLI、配置文件、Bundler API 和 Watch API 覆盖不同集成层级
  • 平台预设与 ESM/CJS 多格式输出适合应用、库和工具链

需要注意

采用前应考虑的问题

它不是完整的开发服务器

独立 Rolldown 主要负责打包。应用需要的 HTML、Dev Server、HMR 集成和框架体验通常应由 Vite 提供。

Plugin 并非百分之百兼容

Plugin API 高度兼容 Rollup,但多输出、Watch 和 Hook 执行顺序存在差异;维护内部状态的插件尤其需要验证。

部分 API 仍可能演进

build() 等接口在官方文档中仍标记为实验性,HMR 等低层能力也持续发展;直接集成应锁定版本并阅读变更记录。

Node.js 版本要求较新

当前 npm 包要求 Node.js 20.19+ 或 22.12+,升级前应检查开发机、CI、容器和发布环境。

原生二进制有平台差异

主流平台提供预编译 Binding,次要或实验平台的支持级别不同;WASI 回退也可能有性能和功能限制。

转换 TypeScript 不等于类型检查

Rolldown 会移除类型并生成 JavaScript,但不会替代 tsc、vue-tsc 等完整类型检查,应在 CI 中单独运行。

内建能力与旧插件可能重复

CommonJS、Node Resolve、Alias、JSON、Replace 和压缩等功能已有内建方案。机械复制 Rollup 插件可能降低性能或产生冲突。

迁移必须比较最终产物

即使配置通过,模块互操作、Chunk、执行顺序、Source Map 和 Plugin 输出也可能不同,应运行测试并检查部署资源。

公开 Benchmark 不能代替项目数据

性能取决于模块形态、插件、Source Map、压缩和存储环境,应同时衡量冷构建、增量构建、体积及运行时表现。

QUICK START

快速开始

下面从最小 CLI Bundle 开始,再使用配置文件输出 ESM 与 CJS,并加入一个 Rollup 风格插件。

1安装 Rolldown
bash
mkdir rolldown-demo
cd rolldown-demo
npm init -y
npm install --save-dev rolldown
2完成第一个 Bundle
bash
mkdir src

# 创建 src/main.js 后执行
npx rolldown src/main.js --file dist/bundle.js
node dist/bundle.js
3添加构建脚本
json
{
  "private": true,
  "type": "module",
  "scripts": {
    "build": "rolldown -c",
    "watch": "rolldown -c --watch",
    "typecheck": "tsc --noEmit"
  },
  "devDependencies": {
    "rolldown": "^1.2.0"
  }
}
4创建多格式配置
javascript
import { defineConfig } from "rolldown";

export default defineConfig({
  input: {
    index: "src/index.ts",
    browser: "src/browser.ts",
  },
  external: ["react"],
  output: [
    {
      dir: "dist/esm",
      format: "esm",
      sourcemap: true,
    },
    {
      dir: "dist/cjs",
      format: "cjs",
      sourcemap: true,
    },
  ],
});
5编写入口模块
typescript
export type Project = {
  name: string;
  homepage: string;
};

export function formatProject(project: Project) {
  return `${project.name} · ${project.homepage}`;
}

export async function loadSearch() {
  return import("./search.js");
}
6添加虚拟模块插件
javascript
const virtualId = "virtual:build-info";
const resolvedId = "\0" + virtualId;

export function buildInfoPlugin() {
  return {
    name: "build-info",
    resolveId(id) {
      return id === virtualId ? resolvedId : null;
    },
    load(id) {
      if (id === resolvedId) {
        return `export const builtAt = ${JSON.stringify(
          new Date().toISOString(),
        )}`;
      }
      return null;
    },
  };
}
7通过 JavaScript API 构建
javascript
import { rolldown } from "rolldown";

const bundle = await rolldown({
  input: "src/index.ts",
});

await bundle.write({
  dir: "dist",
  format: "esm",
  sourcemap: true,
});

await bundle.close();
8执行类型检查和构建
bash
npm run typecheck
npm run build

下一步:Web 应用通常直接使用 Vite,库项目优先评估 tsdown;只有在需要低层输入、输出、插件或 JavaScript API 控制时,才直接维护 Rolldown 配置。迁移 Rollup 前应核对 Plugin Hook 差异和最终产物。

ALTERNATIVES

类似项目

Vite 是 Rolldown 最重要的上层使用者;Rspack 与 Webpack 代表应用 Bundler 的其他技术路线,Rollup 和 esbuild 列为外部参考。

COMPARISON

Rolldown vs Rollup

Rolldown 在配置、JavaScript API 和 Plugin 模型上高度兼容 Rollup,但使用 Rust 与 Oxc 重写核心,并内建更多类似 esbuild 的转换和解析能力。

比较维度RolldownRollup
核心实现Rust 核心与 Oxc 工具链JavaScript 实现
主要目标统一 Vite 底层,并兼顾应用与库构建高质量 JavaScript 模块与库打包
性能模型并行 Rust 管线,面向大型模块图成熟可靠,但大型构建通常更慢
TypeScript / JSX通过 Oxc 内建转换和语法降级通常依赖插件或外部转换器
CommonJS / Node 解析常见能力内建通常使用官方 CommonJS 与 Node Resolve 插件
Plugin API高度兼容,但存在 Hook 行为差异原生规范和最成熟的插件兼容基准
Tree Shaking兼顾 Rollup 语义与高性能实现长期以精细 Tree Shaking 和输出质量见长
稳定与兼容1.x 稳定线,部分低层 API 仍持续演进历史更久、边缘行为和插件生态更成熟
更适合Vite、超大模块图和希望统一转换/打包的团队追求最大插件兼容性和稳定库输出的项目
如何选择

如果现有 Rollup 配置稳定、构建时间可接受,并依赖复杂 Plugin Hook,继续使用 Rollup 风险更低;如果大型模块图构建明显缓慢、希望复用 Vite 生态并减少基础转换插件,可以试点 Rolldown。应用优先通过 Vite 使用,常规 TypeScript 库优先评估 tsdown,低层直用则必须对比测试、Chunk、Source Map 和发布产物。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 29 日
核验版本Rolldown 1.2.0
内容维护Docs100 编辑整理
项目维护状态活跃维护

本页依据 Rolldown 官方介绍、入门、CLI、Bundler API、Plugin API 和故障排查文档,以及 npm Registry 与官方源码仓库整理。Rolldown 与 Vite 演进紧密,部分独立 API 和 Plugin 兼容细节更新较快,采用前应再次核对对应版本文档。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 29 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 29 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库