npm package: @gulibs/vgrove-core
Description: VGrove CLI - A unified development tool for React applications with auto-routes and i18n
Author: GuLibs
Latest version: 0.0.170

# 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)。