@gulibs/vgrove-core
Version:
VGrove CLI - A unified development tool for React applications with auto-routes and i18n
425 lines (338 loc) • 7.67 kB
Markdown
# VGrove Core
> VGrove 生态系统的核心构建工具和配置管理器,提供统一的开发体验
## 🚀 特性
- **零配置**: 开箱即用的 Vite 配置和构建流程
- **智能集成**: 自动集成 VGrove UI 和 AutoRoutes
- **多框架支持**: 支持 React + SWC 的高性能构建
- **UI 框架检测**: 自动检测和配置 HeroUI/Tailwind CSS
- **开发服务器**: 内置开发服务器和热更新
- **构建优化**: 生产环境构建优化和代码分割
- **TypeScript**: 完整的类型支持
## 📦 安装
```bash
npm install @gulibs/vgrove-core
# 或
pnpm add @gulibs/vgrove-core
# 或
yarn add @gulibs/vgrove-core
```
### 全局安装 CLI
```bash
npm install -g @gulibs/vgrove-core
# 或
pnpm add -g @gulibs/vgrove-core
```
## 🎯 快速开始
### 1. 创建配置文件
```typescript
// vgrove.config.ts
import { defineConfig } from '@gulibs/vgrove-core';
export default defineConfig({
// VGrove 特定配置
vgrove: {
// 路由配置
routes: {
dirs: [
{
dir: './src/pages',
baseRoute: '/'
}
],
routeMode: 'flat',
debug: true
},
// UI 框架配置
ui: {
framework: 'heroui' // 'heroui' | 'none'
},
// 国际化配置
i18n: {
locales: ['zh-CN', 'en-US'],
defaultLocale: 'zh-CN',
debug: false
},
// 构建配置
build: {
target: 'es2020',
outDir: 'dist',
sourcemap: true,
minify: 'esbuild'
}
},
// 标准 Vite 配置(可选)
vite: {
server: {
port: 3000
},
resolve: {
alias: {
'@components': './src/components'
}
}
}
});
```
### 2. 使用 CLI
```bash
# 开发模式
vgrove dev
# 构建生产版本
vgrove build
# 预览构建结果
vgrove preview
# 显示帮助
vgrove --help
```
### 3. 编程式使用
```typescript
// vite.config.ts
import { createViteConfig } from '@gulibs/vgrove-core';
import groveConfig from './vgrove.config';
export default createViteConfig(groveConfig);
```
## ⚙️ 配置选项
### VGrove 配置
```typescript
interface VGroveConfig {
/** VGrove 特定配置 */
vgrove?: {
/** 路由配置 */
routes?: AutoRoutesOptions;
/** UI 框架配置 */
ui?: UIConfig;
/** 国际化配置 */
i18n?: I18nConfig;
/** 构建配置 */
build?: BuildConfig;
};
/** 标准 Vite 配置 */
vite?: UserConfig;
}
```
### 路由配置
```typescript
interface AutoRoutesOptions {
/** 路由目录 */
dirs: RouteOption[];
/** 路由模式 */
routeMode?: 'flat' | 'nested';
/** 启用缓存 */
cache?: boolean;
/** 调试模式 */
debug?: boolean;
}
interface RouteOption {
/** 扫描目录 */
dir: string;
/** 基础路由 */
baseRoute: string;
/** 包含模式 */
include?: string[];
/** 排除模式 */
exclude?: string[];
}
```
### UI 框架配置
```typescript
interface UIConfig {
/** UI 框架类型 */
framework?: 'heroui' | 'none';
}
```
### 国际化配置
```typescript
interface I18nConfig {
/** 支持的语言 */
locales?: string[];
/** 默认语言 */
defaultLocale?: string;
/** 调试模式 */
debug?: boolean;
}
```
### 构建配置
```typescript
interface BuildConfig {
/** 构建目标 */
target?: string;
/** 输出目录 */
outDir?: string;
/** 源码映射 */
sourcemap?: boolean;
/** 代码压缩 */
minify?: boolean | 'esbuild' | 'terser';
}
```
## 🔧 高级配置
### 多环境配置
```typescript
// vgrove.config.ts
import { defineConfig } from '@gulibs/vgrove-core';
export default defineConfig(({ command, mode }) => {
const isDev = command === 'serve';
const isProd = mode === 'production';
return {
vgrove: {
routes: {
debug: isDev, // 开发环境启用调试
dirs: [
{
dir: './src/pages',
baseRoute: '/'
}
]
},
build: {
sourcemap: isDev, // 开发环境启用源码映射
minify: isProd // 生产环境启用压缩
}
},
vite: {
server: {
port: isDev ? 3000 : undefined
}
}
};
});
```
### 自定义插件集成
```typescript
// vgrove.config.ts
import { defineConfig } from '@gulibs/vgrove-core';
import { someCustomPlugin } from './plugins/custom-plugin';
export default defineConfig({
vgrove: {
// VGrove 配置
},
vite: {
plugins: [
// 自定义插件会与 VGrove 内置插件合并
someCustomPlugin()
]
}
});
```
### HeroUI 自动配置
VGrove Core 会自动检测项目中的 HeroUI 依赖:
```json
// package.json
{
"dependencies": {
"@heroui/react": "^2.0.0",
"@tailwindcss/vite": "^4.0.0"
}
}
```
当检测到这些依赖时,会自动:
- 启用 Tailwind CSS Vite 插件
- 配置 HeroUI 相关的构建选项
- 优化 CSS 处理流程
## 📁 项目结构
推荐的项目结构:
```
my-vgrove-app/
├── src/
│ ├── pages/ # 路由页面
│ │ ├── index.page.tsx
│ │ └── about.page.tsx
│ ├── components/ # 组件
│ ├── hooks/ # React Hooks
│ ├── utils/ # 工具函数
│ └── main.tsx # 应用入口
├── public/ # 静态资源
├── vgrove.config.ts # VGrove 配置
├── package.json
└── tsconfig.json
```
## 🚀 CLI 命令
### 开发命令
```bash
# 启动开发服务器
vgrove dev
# 指定端口
vgrove dev --port 8080
# 指定主机
vgrove dev --host 0.0.0.0
```
### 构建命令
```bash
# 构建生产版本
vgrove build
# 构建并分析包大小
vgrove build --analyze
# 构建到指定目录
vgrove build --outDir custom-dist
```
### 预览命令
```bash
# 预览构建结果
vgrove preview
# 指定预览端口
vgrove preview --port 4173
```
## 🔌 插件生态
VGrove Core 内置集成了以下插件:
- **@vitejs/plugin-react-swc**: React + SWC 支持
- **@gulibs/vgrove-autoroutes**: 自动路由生成
- **@gulibs/vgrove-i18n**: 国际化支持
- **@tailwindcss/vite**: Tailwind CSS 支持(HeroUI 模式)
## 🐛 调试
### 启用调试模式
```typescript
// vgrove.config.ts
export default defineConfig({
vgrove: {
routes: {
debug: true // 路由调试
},
i18n: {
debug: true // 国际化调试
}
}
});
```
### 环境变量
```bash
# 启用详细日志
DEBUG=vgrove:* vgrove dev
# 启用特定模块调试
DEBUG=vgrove:routes vgrove dev
```
## 📊 性能优化
VGrove Core 内置了多项性能优化:
- **SWC 编译**: 使用 SWC 替代 Babel,提升编译速度
- **智能缓存**: 路由和配置缓存,减少重复计算
- **代码分割**: 自动代码分割和懒加载
- **资源优化**: 图片、字体等资源优化
- **Tree Shaking**: 自动移除未使用的代码
## 🔄 迁移指南
### 从传统 Vite 项目迁移
1. 安装 VGrove Core:
```bash
npm install @gulibs/vgrove-core
```
2. 创建 VGrove 配置:
```typescript
// vgrove.config.ts
import { defineConfig } from '@gulibs/vgrove-core';
export default defineConfig({
vgrove: {
routes: {
dirs: [{ dir: './src/pages', baseRoute: '/' }]
}
}
});
```
3. 更新 Vite 配置:
```typescript
// vite.config.ts
import { createViteConfig } from '@gulibs/vgrove-core';
import groveConfig from './vgrove.config';
export default createViteConfig(groveConfig);
```
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
## 📞 支持
如有问题,请提交 [Issue](https://github.com/your-repo/vgrove-core/issues)。