К основному содержанию
скилл CX Codex

vite · mindrally — скилл для Claude Code: что делает и как установить

Даёт агенту шаблоны конфигурации Vite: HMR, алиасы путей, сборку бандлов, интеграцию React, Vue и Vitest.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Mindrally/skills --skill vite -a claude-code
Открыть на GitHub

Что делает vite

Скилл содержит готовые паттерны настройки vite.config.ts. Внутри собраны примеры для ручного управления Hot Module Replacement через import.meta.hot, типизации переменных окружения в vite-env.d.ts и настройки статических ресурсов через суффиксы вроде ?raw и ?worker.

Покрывает типовые интеграции с фреймворками (React, Vue, Svelte), правила разбивки чанков через rollupOptions.output.manualChunks, конфигурацию прокси для бэкенда и веб-сокетов, запуск Vitest с окружением jsdom, а также режимы сборки библиотек и SSR.

Для препроцессоров вроде Sass потребуется отдельно доставить соответствующие npm-пакеты, сам конфиг их только подхватывает.

Какие задачи решает

  • настроить алиасы путей и проксирование запросов к бэкенду
  • разбить итоговый бандл на чанки через Rollup
  • сконфигурировать интеграцию с React, Vue или Svelte
  • добавить тесты на Vitest с отчётами о покрытии

Примеры запросов агенту

  • Настрой vite.config.ts для React с алиасами путей и разделением вендорных чанков
  • Покажи, как типизировать переменные окружения VITE_ в vite-env.d.ts
  • Добавь конфигурацию прокси для /api и веб-сокетов в Vite

Как установить vite

1Через Skills CLI (Vercel)

npx skills add Mindrally/skills --skill vite -a claude-code

2Вручную: положить файлы

~/.claude/skills/vite/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/vite/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о vite

Как установить vite в Claude Code?

Выполните команду npx skills add Mindrally/skills --skill vite -a claude-code в терминале.

Что делает этот скилл?

Передаёт ассистенту правила и примеры конфигурации Vite для сборки проектов, оптимизации чанков, HMR и связки с Vitest.

Поддерживает ли скилл сборку собственных библиотек?

Да, в инструкциях есть пример режима build.lib с выносом внешних зависимостей вроде React в rollupOptions.external.

Исходный текст

SKILL.md · Apache-2.0
---
name: vite
description: Expert guidance for Vite development with modern build tooling, HMR, framework integrations, and performance optimization
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# Vite Development

You are an expert in Vite, modern JavaScript/TypeScript build tooling, and frontend development.

## Key Principles

- Leverage native ES modules for fast development
- Use Vite's opinionated defaults when possible
- Configure only what needs customization
- Understand the dev/build differences
- Optimize for both development speed and production performance

## Project Setup

### Basic Configuration
```typescript
// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  server: {
    port: 3000,
    open: true,
  },
  build: {
    outDir: 'dist',
    sourcemap: true,
  },
});
```

### Path Aliases
```typescript
import { defineConfig } from 'vite';
import path from 'path';

export default defineConfig({
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      '@components': path.resolve(__dirname, './src/components'),
      '@utils': path.resolve(__dirname, './src/utils'),
    },
  },
});
```

## Environment Variables

### Usage
```typescript
// .env
VITE_API_URL=https://api.example.com
VITE_APP_TITLE=My App

// In code
const apiUrl = import.meta.env.VITE_API_URL;
const isDev = import.meta.env.DEV;
const isProd = import.meta.env.PROD;
const mode = import.meta.env.MODE;
```

### Type Definitions
```typescript
// src/vite-env.d.ts
/// <reference types="vite/client" />

interface ImportMetaEnv {
  readonly VITE_API_URL: string;
  readonly VITE_APP_TITLE: string;
}

interface ImportMeta {
  readonly env: ImportMetaEnv;
}
```

## Hot Module Replacement

### Manual HMR
```typescript
// For libraries without HMR support
if (import.meta.hot) {
  import.meta.hot.accept('./module.ts', (newModule) => {
    // Handle the updated module
    console.log('Module updated:', newModule);
  });

  import.meta.hot.dispose(() => {
    // Cleanup before module is replaced
  });
}
```

## Asset Handling

### Static Assets
```typescript
// Import as URL
import imageUrl from './image.png';
// <img src={imageUrl} />

// Import as string (raw)
import shaderCode from './shader.glsl?raw';

// Import as worker
import Worker from './worker.ts?worker';
const worker = new Worker();
```

### Public Directory
```
public/
├── favicon.ico      # Served at /favicon.ico
├── robots.txt       # Served at /robots.txt
└── images/          # Served at /images/
```

## Framework Integrations

### React
```typescript
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [
    react({
      // Enable Fast Refresh
      fastRefresh: true,
      // Babel plugins
      babel: {
        plugins: ['@emotion/babel-plugin'],
      },
    }),
  ],
});
```

### Vue
```typescript
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],
});
```

### Svelte
```typescript
import { defineConfig } from 'vite';
import { svelte } from '@sveltejs/vite-plugin-svelte';

export default defineConfig({
  plugins: [svelte()],
});
```

## Build Optimization

### Code Splitting
```typescript
// Dynamic imports create separate chunks
const AdminPanel = lazy(() => import('./AdminPanel'));

// Manual chunks
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          vendor: ['react', 'react-dom'],
          utils: ['lodash', 'date-fns'],
        },
      },
    },
  },
});
```

### Chunk Size Optimization
```typescript
export default defineConfig({
  build: {
    chunkSizeWarningLimit: 500,
    rollupOptions: {
      output: {
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.split('node_modules/')[1].split('/')[0];
          }
        },
      },
    },
  },
});
```

## CSS Handling

### CSS Modules
```typescript
// styles.module.css is auto-detected
import styles from './styles.module.css';

// <div className={styles.container}>
```

### PostCSS
```javascript
// postcss.config.js
export default {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
};
```

### Preprocessors
```typescript
// Automatically handled with package installed
// npm install -D sass
import './styles.scss';
```

## Proxy Configuration

```typescript
export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:4000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
      '/socket.io': {
        target: 'ws://localhost:4000',
        ws: true,
      },
    },
  },
});
```

## Plugin Development

```typescript
// my-vite-plugin.ts
import type { Plugin } from 'vite';

export function myPlugin(): Plugin {
  return {
    name: 'my-plugin',

    // Hook: modify config
    config(config, { mode }) {
      return {
        define: {
          __BUILD_TIME__: JSON.stringify(new Date().toISOString()),
        },
      };
    },

    // Hook: transform code
    transform(code, id) {
      if (id.endsWith('.md')) {
        return {
          code: `export default ${JSON.stringify(code)}`,
          map: null,
        };
      }
    },

    // Hook: configure dev server
    configureServer(server) {
      server.middlewares.use((req, res, next) => {
        // Custom middleware
        next();
      });
    },
  };
}
```

## Testing with Vitest

```typescript
// vite.config.ts
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    globals: true,
    environment: 'jsdom',
    setupFiles: './src/test/setup.ts',
    coverage: {
      provider: 'v8',
      reporter: ['text', 'json', 'html'],
    },
  },
});
```

## SSR Configuration

```typescript
export default defineConfig({
  build: {
    ssr: true,
    rollupOptions: {
      input: './src/entry-server.ts',
    },
  },
  ssr: {
    external: ['express'],
    noExternal: ['my-ui-library'],
  },
});
```

## Library Mode

```typescript
export default defineConfig({
  build: {
    lib: {
      entry: './src/index.ts',
      name: 'MyLib',
      fileName: (format) => `my-lib.${format}.js`,
    },
    rollupOptions: {
      external: ['react', 'react-dom'],
      output: {
        globals: {
          react: 'React',
          'react-dom': 'ReactDOM',
        },
      },
    },
  },
});
```

## Best Practices

- Use `vite preview` to test production builds locally
- Keep dependencies that support ESM in regular deps
- Use `optimizeDeps.include` for CommonJS dependencies
- Enable `build.sourcemap` for debugging production
- Use `server.warmup` for faster dev server starts

© Mindrally · Apache-2.0 · Mindrally/skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →

Сначала — vite от других авторов.

vite Anthony Fu Скилл помогает настраивать Vite, писать плагины и собирать SSR-приложения. Пригодится для проектов с vite.config.ts и миграции на Rolldown. CX Codex +1 39 900установок vite Anthony Fu Скилл по Vite 6.x: помогает настроить конфиг, подключить плагины, разобраться с dev-сервером и собрать проект в прод. CX Codex +1 747установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. CX Codex +1 678 700установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. 986 201установок hyperframes heygen-com Скилл задаёт агенту правила рендера HTML-кода в видео через HyperFrames. Помогает собирать проморолики, эксплейнеры и титры прямо в коде проекта. CX Codex +1 1 200 000установок hyperframes-cli heygen-com Управляет проектами HyperFrames через терминал: собирает таймлайн, проверяет контраст кадров, запускает предпросмотр и рендерит видео локально или в облаке. CX Codex +1 1 300 000установок webapp-testing официальный anthropics Скилл запускает проверки локальных веб-приложений через Playwright: помогает отлаживать UI, делать скриншоты и смотреть логи браузера. 186 758установок

Из того же набора214

testing Задаёт правила тестирования для ИИ-агента: от табличных проверок до изоляции состояния и структуры каталогов. CX Codex +1 825установок go-backend-microservices Набор инструкций для ИИ-агентов по разработке микросервисов на Go. Помогает строить чистую архитектуру, внедрять OpenTelemetry и настраивать структурированное логирование. CX Codex +1 823установок websocket-development Набор правил для агента, который пишет сервер и клиент на WebSocket: соединения, сообщения, масштабирование, безопасность. CX Codex +1 826установок laravel Скилл настраивает агента на разработку приложений на Laravel с учётом стандартов PHP 8.1+ и строгой типизации. Пригодится при проектировании архитектуры и написании тестов. CX Codex +1 822установок git-workflow Задаёт правила ведения репозитория: оформление коммитов по стандарту Conventional Commits, префиксы веток и подготовку пулл-реквестов. Пригодится для командной разработки. CX Codex +1 818установок angular Скилл настраивает ИИ-помощника на стандарты Angular и TypeScript: генерацию standalone-компонентов, реактивность на сигналах и отказ от типа any. CX Codex +1 816установок hono-typescript Задаёт агенту правила разработки API на Hono и TypeScript под Cloudflare Workers, Deno, Bun и Node.js. Пригодится, когда проект уже на Hono или только переезжает на него. CX Codex +1 819установок motion Задаёт агенту правила работы с библиотекой Motion в чистом JavaScript и TypeScript. Помогает писать быстрые веб-анимации на GPU без просадок кадров. CX Codex +1 812установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой