Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 105 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,48 @@
<p align="center"></p>

<h1 align="center">BundleKit</h1>

<p align="center">
前端多构建器工具集——一套配置,驱动多种构建工具
<strong>统一前端构建,告别配置迁移。</strong>
</p>

<p align="center">
<a href="https://www.npmjs.com/package/@bundlekit/service"><img src="https://img.shields.io/npm/v/@bundlekit/service.svg" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/@bundlekit/cli"><img src="https://img.shields.io/npm/v/@bundlekit/cli.svg" alt="npm version" /></a>
<a href="https://github.com/Harhao/bundlekit/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/@bundlekit/service.svg" alt="license" /></a>
<a href="https://bundlekit.harhao.workers.dev"><img src="https://img.shields.io/badge/docs-online-blue" alt="docs" /></a>
<a href="./README_EN.md"><img src="https://img.shields.io/badge/lang-English-blue" alt="English" /></a>
</p>

---

## 简介

BundleKit 是一个**前端多构建器统一工具集**,目标是让开发者通过**一份 `.bundlekitrc.ts` 配置文件**,即可自由切换底层构建工具,无需关心各构建器之间配置的差异。
BundleKit 是一个**前端多构建器统一工具集**。通过**一份 `.bundlekitrc.ts` 配置文件**,即可自由切换底层构建工具,无需关心各构建器之间配置的差异。

不再被单一构建工具绑定,迁移工具时无需重写构建配置。BundleKit 通过适配器模式抹平了各构建器的差异,让你专注于业务开发。

目前已支持的构建器包括:Webpack、Vite、Rollup、Rspack、Rolldown、Parcel、esbuild。
---

## 特性

- 🚀 **多构建器支持**:一套配置,支持切换 Webpack / Vite / Rollup / Rspack / Rolldown / Parcel / esbuild
- 🧩 **插件化架构**:通过插件扩展框架支持(React / Vue 3 / Svelte / Angular / Node.js)
- 🎯 **CLI 脚手架**:一行命令创建项目,交互式选择框架、构建器、语言
- 🔌 **插件管理**:为已有项目添加框架插件(`bundlekit-cli add`)
- 📦 **库模式**:支持 ESM / CJS / UMD 多格式输出(`--lib` / `--library-name`)
- 🖥️ **SSR 支持**:内置服务端渲染支持,双通道构建(`--ssr`)
- 🤖 **MCP 集成**:提供 MCP Server,支持通过 AI 工具链创建和管理项目
- 📖 **文档站点**:基于 dumi 的完整文档和贡献指南
- ✅ **完善的测试**:单元测试 + 集成测试 + E2E 测试
- 🚀 **多构建器支持** — 一套配置,支持切换 Webpack / Vite / Rollup / Rspack / Rolldown / Parcel / esbuild
- 🧩 **插件化架构** — 通过插件扩展框架支持:React / Vue 3 / Svelte / Angular / Node.js
- 🎯 **CLI 脚手架** — 交互式创建项目,选择框架、构建器、语言和包管理器
- 🔌 **插件管理** — 为已有项目添加框架插件(`bc add react`)
- 📦 **库模式** — 支持 ESM / CJS / UMD 多格式输出(`--lib` / `--library-name`)
- 🖥️ **SSR 支持** — 内置服务端渲染,双通道构建(`--ssr`)
- 🤖 **MCP 集成** — 通过 Model Context Protocol 支持 AI 驱动的项目创建
- 📖 **文档站点** — 完整文档 + AI 智能问答助手
- ✅ **完善的测试** — 单元测试 + 集成测试 + E2E 测试(Vitest + Playwright)

---

## 快速开始

### 创建新项目

```bash
# 使用完整命令
bundlekit-cli create my-app
# 完整命令
npx @bundlekit/cli create my-app

# 或使用短别名
bc create my-app
Expand Down Expand Up @@ -82,9 +85,11 @@ bc create my-lib --template node-ts --bundler rollup --lib --library-name MyLib

**包管理器**:`npm` `yarn` `pnpm`(默认 pnpm)

---

## 配置说明

项目根目录创建 `.bundlekitrc.ts`(或 `.bundlekitrc.js`)文件
在项目根目录创建 `.bundlekitrc.ts`(或 `.bundlekitrc.js`)配置文件

```typescript
import { defineConfig } from '@bundlekit/service';
Expand Down Expand Up @@ -114,7 +119,9 @@ export default defineConfig({
});
```

## 使用构建服务
> **切换构建器**只需修改 `bundler` 字段值,其余配置无需变动。

### 使用构建服务

```bash
# 启动开发服务器
Expand All @@ -124,54 +131,74 @@ ds serve
ds build
```

---

## 架构

BundleKit 采用**适配器模式**,将你的配置与具体构建器解耦:

```
.bundlekitrc.ts 统一配置
Service (核心) 编排插件和构建器解析
构建器适配器 将统一配置转换为构建器原生格式
┌─────┴─────┐
│ Vite │ Webpack │ Rollup │ Rspack │ Rolldown │ Parcel │ esbuild
└─────┬─────┘
框架插件 设置框架上下文
┌─────┴─────┐
│ React │ Vue 3 │ Svelte │ Angular │ Node.js
└───────────┘
```

每个构建器适配器实现 `IBuildToolAdapter` 接口,包含三个核心方法:

- `transformConfig(config)` — 将统一配置转换为构建器原生格式
- `validateConfig(config)` — 构建前校验配置
- `run(config)` — 执行构建

---

## MCP Server

BundleKit 提供了 MCP(Model Context ProtocolServer,可以通过 AI 工具链来创建和管理项目:
BundleKit 提供了 **Model Context Protocol (MCP) Server**,支持通过 AI 工具链来创建和管理项目:

```bash
# 启动 MCP Server
bundlekit-cli-mcp
npx @bundlekit/cli-mcp
```

MCP Server 提供以下工具:
| 工具 | 说明 |
|------|------|
| `create-project` | 创建新项目 |
| `add-plugin` | 添加框架插件 |
| `list-templates` | 列出可用模板 |
| `help` | 获取帮助信息 |

- `create-project` — 创建新项目
- `add-plugin` — 添加框架插件
- `list-templates` — 列出可用模板
- `help` — 获取帮助信息
可与任何支持 MCP 协议的 AI 助手集成,实现自然语言驱动的项目脚手架。

适用于与支持 MCP 协议的 AI 助手集成,实现自然语言驱动的项目脚手架。
---

## 项目结构

```
bundlekit/
├── packages/
│ ├── bundlekit-cli/ # CLI 脚手架工具 (@bundlekit/cli)
│ ├── bundlekit-service/ # 构建服务 (@bundlekit/service)
│ ├── bundlekit-service/ # 核心构建服务 (@bundlekit/service)
│ ├── bundlekit-shared-utils/ # 共享工具库 (@bundlekit/shared-utils)
│ ├── bundlekit-cli-mcp/ # MCP Server (@bundlekit/cli-mcp)
│ ├── bundlekit-bundler-webpack/ # Webpack 适配器
│ ├── bundlekit-bundler-vite/ # Vite 适配器
│ ├── bundlekit-bundler-rollup/ # Rollup 适配器
│ ├── bundlekit-bundler-rspack/ # Rspack 适配器
│ ├── bundlekit-bundler-rolldown/ # Rolldown 适配器
│ ├── bundlekit-bundler-parcel/ # Parcel 适配器
│ ├── bundlekit-bundler-esbuild/ # esbuild 适配器
│ ├── bundlekit-plugin-react/ # React 框架插件
│ ├── bundlekit-plugin-vue/ # Vue 3 框架插件
│ ├── bundlekit-plugin-svelte/ # Svelte 框架插件
│ ├── bundlekit-plugin-angular/ # Angular 框架插件
│ ├── bundlekit-plugin-node/ # Node.js 插件
│ ├── bundlekit-plugin-mock/ # Mock API 插件
│ ├── bundlekit-request/ # HTTP 请求工具 (@bundlekit/request)
│ ├── bundlekit-bundler-*/ # 构建器适配器(7 个)
│ ├── bundlekit-plugin-*/ # 框架插件(6 个)
│ ├── bundlekit-request/ # HTTP 请求工具
│ ├── bundlekit-docs/ # 文档站点 (dumi)
│ └── bundlekit-docs-agent/ # 文档查询 Agent
├── __tests__/ # 测试目录
│ ├── unit/ # 单元测试
│ └── integration/ # 集成测试 & E2E 测试
├── scripts/ # 构建验证脚本
├── openspec/ # AI Spec 配置
│ └── bundlekit-docs-agent/ # 基于 RAG 的文档问答 Agent
├── __tests__/ # 测试目录(单元 + 集成 + E2E)
├── scripts/ # 构建与验证脚本
└── turbo.json # Turborepo 任务编排
```

Expand All @@ -183,8 +210,8 @@ bundlekit/
| `bundlekit-service` | `@bundlekit/service` | 核心构建服务 |
| `bundlekit-shared-utils` | `@bundlekit/shared-utils` | 共享工具库 |
| `bundlekit-cli-mcp` | `@bundlekit/cli-mcp` | MCP Server |
| `bundlekit-bundler-webpack` | `@bundlekit/bundler-webpack` | Webpack 适配器 |
| `bundlekit-bundler-vite` | `@bundlekit/bundler-vite` | Vite 适配器 |
| `bundlekit-bundler-webpack` | `@bundlekit/bundler-webpack` | Webpack 适配器 |
| `bundlekit-bundler-rollup` | `@bundlekit/bundler-rollup` | Rollup 适配器 |
| `bundlekit-bundler-rspack` | `@bundlekit/bundler-rspack` | Rspack 适配器 |
| `bundlekit-bundler-rolldown` | `@bundlekit/bundler-rolldown` | Rolldown 适配器 |
Expand All @@ -194,10 +221,12 @@ bundlekit/
| `bundlekit-plugin-vue` | `@bundlekit/plugin-vue` | Vue 3 框架插件 |
| `bundlekit-plugin-svelte` | `@bundlekit/plugin-svelte` | Svelte 框架插件 |
| `bundlekit-plugin-angular` | `@bundlekit/plugin-angular` | Angular 框架插件 |
| `bundlekit-plugin-node` | `@bundlekit/plugin-node` | Node.js / TypeScript 插件 |
| `bundlekit-plugin-node` | `@bundlekit/plugin-node` | Node.js 插件 |
| `bundlekit-plugin-mock` | `@bundlekit/plugin-mock` | Mock API 插件 |
| `bundlekit-request` | `@bundlekit/request` | HTTP 请求工具 |

---

## 开发

### 环境要求
Expand All @@ -219,59 +248,43 @@ pnpm build:all

# 单独构建
pnpm build:shared # 先构建共享工具
pnpm build:webpack # 构建 webpack 适配器
pnpm build:vite # 构建 vite 适配器
pnpm build:rollup # 构建 rollup 适配器
pnpm build:rspack # 构建 rspack 适配器
pnpm build:parcel # 构建 parcel 适配器
pnpm build:esbuild # 构建 esbuild 适配器
pnpm build:service # 构建服务(依赖适配器)
pnpm build:docs # 构建文档站点
pnpm build:vite # Vite 适配器
pnpm build:webpack # Webpack 适配器
# ... 其他适配器
pnpm build:service # 核心服务(依赖适配器)
pnpm build:docs # 文档站点
```

### 测试

```bash
# 单元测试
pnpm test

# 集成测试
pnpm test:integration

# E2E 测试
pnpm test:e2e

# 全部测试
pnpm test:all
pnpm test # 单元测试
pnpm test:integration # 集成测试
pnpm test:e2e # E2E 测试
pnpm test:all # 全部测试
```

### 构建验证

```bash
# 验证包产物
pnpm verify:pack

# 验证模板完整性
node scripts/validate-templates.mjs
pnpm verify:pack # 验证包产物
node scripts/validate-templates.mjs # 验证模板完整性
```

---

## 文档

文档站点源码位于 `packages/bundlekit-docs/`,基于 [dumi](https://d.umijs.org/) 构建。
- **在线文档**:[bundlekit.harhao.workers.dev](https://bundlekit.harhao.workers.dev)
- **AI 文档助手**:[llm-chat-app.harhao.workers.dev](https://llm-chat-app.harhao.workers.dev) — 基于 RAG 的智能文档问答

```bash
# 本地启动文档站点
cd packages/bundlekit-docs
pnpm dev
```

在线文档:[bundlekit.harhao.workers.dev](https://bundlekit.harhao.workers.dev)

💬 **AI 文档助手**:[llm-chat-app.harhao.workers.dev](https://llm-chat-app.harhao.workers.dev) — 基于 RAG 的智能文档问答,支持自然语言查询 BundleKit 用法和配置

## 贡献指南

贡献文档位于 `packages/bundlekit-docs/docs/contributing/`,包含:
### 贡献指南

- [贡献总览](packages/bundlekit-docs/docs/contributing/index.md)
- [环境搭建](packages/bundlekit-docs/docs/contributing/setup.md)
Expand All @@ -280,18 +293,24 @@ pnpm dev
- [新增构建器](packages/bundlekit-docs/docs/contributing/adding-bundler.md)
- [新增插件](packages/bundlekit-docs/docs/contributing/adding-plugin.md)

---

## CI/CD

项目使用 GitHub Actions 自动化:
通过 GitHub Actions 自动化:

- **publish-npm**:推送 `master` 分支时自动构建、测试、发布 npm 包(Changesets)
- **create-release-pr**:自动创建版本发布 PR
- **deploy-docs**:自动部署文档站点
- **publish-npm** — 推送 `master` 分支时自动构建、测试、发布 npm 包(Changesets)
- **create-release-pr** — 自动创建版本发布 PR
- **deploy-docs** — 自动部署文档站点

---

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Harhao/bundlekit&type=Date)](https://star-history.com/#Harhao/bundlekit&Date)

---

## 许可证

[MIT](./LICENSE) © [harhao](https://github.com/Harhao)
Loading
Loading