217 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # @coze-arch/vitest-config
 | |
| 
 | |
| > Shared Vitest configuration for the Coze architecture ecosystem
 | |
| 
 | |
| A unified testing configuration package that provides optimized Vitest setups for Node.js and web applications in the Coze monorepo. This package simplifies test configuration management and ensures consistency across all projects.
 | |
| 
 | |
| ## Features
 | |
| 
 | |
| - **Multiple Presets**: Pre-configured setups for `default`, `node`, and `web` environments
 | |
| - **TypeScript Support**: Built-in TypeScript path mapping with `vite-tsconfig-paths`
 | |
| - **React Testing**: Web preset includes React plugin for component testing
 | |
| - **Coverage Reporting**: Comprehensive coverage configuration with multiple reporters
 | |
| - **Performance Optimized**: Fork-based test execution with configurable pool options
 | |
| - **Semi-UI Compatibility**: Special handling for Semi Design components
 | |
| - **Flexible Configuration**: Easy to extend and customize for specific project needs
 | |
| 
 | |
| ## Get Started
 | |
| 
 | |
| ### Installation
 | |
| 
 | |
| Add the package to your project:
 | |
| 
 | |
| ```bash
 | |
| # In your package.json
 | |
| {
 | |
|   "devDependencies": {
 | |
|     "@coze-arch/vitest-config": "workspace:*"
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| Then run:
 | |
| 
 | |
| ```bash
 | |
| rush update
 | |
| ```
 | |
| 
 | |
| ### Basic Usage
 | |
| 
 | |
| Create a `vitest.config.ts` file in your project root:
 | |
| 
 | |
| ```typescript
 | |
| import { defineConfig } from '@coze-arch/vitest-config';
 | |
| 
 | |
| export default defineConfig({
 | |
|   dirname: __dirname,
 | |
|   preset: 'web', // or 'node' or 'default'
 | |
| });
 | |
| ```
 | |
| 
 | |
| ## API Reference
 | |
| 
 | |
| ### `defineConfig(config, otherConfig?)`
 | |
| 
 | |
| The main configuration function that creates a Vitest configuration based on your requirements.
 | |
| 
 | |
| #### Parameters
 | |
| 
 | |
| **config** (`VitestConfig`):
 | |
| - `dirname` (string, required): The project root directory (`__dirname`)
 | |
| - `preset` (string, required): Configuration preset - `'default'` | `'node'` | `'web'`
 | |
| - All other Vitest configuration options
 | |
| 
 | |
| **otherConfig** (`OtherConfig`, optional):
 | |
| - `fixSemi` (boolean): Enable Semi Design component compatibility fixes
 | |
| 
 | |
| #### Examples
 | |
| 
 | |
| **Default Configuration:**
 | |
| ```typescript
 | |
| import { defineConfig } from '@coze-arch/vitest-config';
 | |
| 
 | |
| export default defineConfig({
 | |
|   dirname: __dirname,
 | |
|   preset: 'default',
 | |
| });
 | |
| ```
 | |
| 
 | |
| **Node.js Application:**
 | |
| ```typescript
 | |
| import { defineConfig } from '@coze-arch/vitest-config';
 | |
| 
 | |
| export default defineConfig({
 | |
|   dirname: __dirname,
 | |
|   preset: 'node',
 | |
|   test: {
 | |
|     include: ['src/**/*.test.ts'],
 | |
|     exclude: ['src/**/*.browser.test.ts'],
 | |
|   },
 | |
| });
 | |
| ```
 | |
| 
 | |
| **React/Web Application:**
 | |
| ```typescript
 | |
| import { defineConfig } from '@coze-arch/vitest-config';
 | |
| 
 | |
| export default defineConfig({
 | |
|   dirname: __dirname,
 | |
|   preset: 'web',
 | |
|   test: {
 | |
|     include: ['src/**/*.{test,spec}.{ts,tsx}'],
 | |
|     setupFiles: ['./src/test-setup.ts'],
 | |
|   },
 | |
| });
 | |
| ```
 | |
| 
 | |
| **With Semi Design Components:**
 | |
| ```typescript
 | |
| import { defineConfig } from '@coze-arch/vitest-config';
 | |
| 
 | |
| export default defineConfig({
 | |
|   dirname: __dirname,
 | |
|   preset: 'web',
 | |
| }, {
 | |
|   fixSemi: true,
 | |
| });
 | |
| ```
 | |
| 
 | |
| **Custom Coverage Configuration:**
 | |
| ```typescript
 | |
| import { defineConfig } from '@coze-arch/vitest-config';
 | |
| 
 | |
| export default defineConfig({
 | |
|   dirname: __dirname,
 | |
|   preset: 'web',
 | |
|   test: {
 | |
|     coverage: {
 | |
|       all: true,
 | |
|       threshold: {
 | |
|         global: {
 | |
|           branches: 80,
 | |
|           functions: 80,
 | |
|           lines: 80,
 | |
|           statements: 80,
 | |
|         },
 | |
|       },
 | |
|     },
 | |
|   },
 | |
| });
 | |
| ```
 | |
| 
 | |
| ### Available Presets
 | |
| 
 | |
| #### `default`
 | |
| - Basic Vitest configuration
 | |
| - TypeScript path mapping
 | |
| - Fork-based test execution
 | |
| - Coverage reporting disabled by default
 | |
| 
 | |
| #### `node`
 | |
| - Extends default preset
 | |
| - Optimized for Node.js applications
 | |
| - No browser-specific plugins
 | |
| 
 | |
| #### `web`
 | |
| - Extends default preset
 | |
| - Includes React plugin for JSX/TSX support
 | |
| - Uses `happy-dom` environment for DOM testing
 | |
| - Optimized for frontend applications
 | |
| 
 | |
| ### Built-in Features
 | |
| 
 | |
| **Test Execution:**
 | |
| - Pool: `forks` with 1-32 workers
 | |
| - Parallel hook execution
 | |
| - Global test APIs enabled
 | |
| - Silent mode in CI environments
 | |
| 
 | |
| **Coverage:**
 | |
| - Provider: V8
 | |
| - Formats: Cobertura, Text, HTML, Clover, JSON
 | |
| - Includes: `src/**/*.ts`, `src/**/*.tsx`
 | |
| - Excludes: Standard Vitest defaults
 | |
| 
 | |
| **TypeScript:**
 | |
| - Automatic path mapping via `vite-tsconfig-paths`
 | |
| - Resolve main fields: `main`, `module`, `exports`
 | |
| 
 | |
| ## Development
 | |
| 
 | |
| ### Scripts
 | |
| 
 | |
| ```bash
 | |
| # Lint the code
 | |
| rush lint
 | |
| 
 | |
| # Development mode
 | |
| rush dev
 | |
| ```
 | |
| 
 | |
| ### Project Structure
 | |
| 
 | |
| ```
 | |
| src/
 | |
| ├── index.js          # CommonJS entry point with Sucrase
 | |
| ├── define-config.ts  # Main configuration function
 | |
| ├── preset-default.ts # Base configuration preset
 | |
| ├── preset-node.ts    # Node.js specific preset
 | |
| ├── preset-web.ts     # Web/React specific preset
 | |
| └── tsc-only.ts       # TypeScript-only mock file
 | |
| ```
 | |
| 
 | |
| ## Dependencies
 | |
| 
 | |
| ### Production Dependencies
 | |
| - `vite-tsconfig-paths`: TypeScript path mapping support
 | |
| 
 | |
| ### Development Dependencies
 | |
| - `vitest`: Core testing framework
 | |
| - `@vitejs/plugin-react`: React support for web preset
 | |
| - `@vitest/coverage-v8`: Coverage reporting
 | |
| - `happy-dom`: Lightweight DOM environment
 | |
| - `sucrase`: Fast TypeScript compilation
 | |
| 
 | |
| ## License
 | |
| 
 | |
| This package is part of the Coze architecture ecosystem and follows the project's licensing terms. |