扣子智能体
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tecvan 6995cec404
chore: format all frontend files (#430)
3 months ago
..
config feat: manually mirror opencoze's code from bytedance 3 months ago
src chore: format all frontend files (#430) 3 months ago
README.md feat: manually mirror opencoze's code from bytedance 3 months ago
eslint.config.js feat: manually mirror opencoze's code from bytedance 3 months ago
package.json chore: format all frontend files (#430) 3 months ago
tsconfig.build.json feat: manually mirror opencoze's code from bytedance 3 months ago
tsconfig.json feat: manually mirror opencoze's code from bytedance 3 months ago

README.md

@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:

# In your package.json
{
  "devDependencies": {
    "@coze-arch/vitest-config": "workspace:*"
  }
}

Then run:

rush update

Basic Usage

Create a vitest.config.ts file in your project root:

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:

import { defineConfig } from '@coze-arch/vitest-config';

export default defineConfig({
  dirname: __dirname,
  preset: 'default',
});

Node.js Application:

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:

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:

import { defineConfig } from '@coze-arch/vitest-config';

export default defineConfig({
  dirname: __dirname,
  preset: 'web',
}, {
  fixSemi: true,
});

Custom Coverage Configuration:

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

# 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.