-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
- YCLIENTS
- Маркетплейс интеграций
- Плагинизация
- Руководство по созданию Frontend плагина
- Сборка и локальная разработка
- Пакет конфигураций сборки Vite
Пакет конфигураций сборки Vite
Пакет предоставляет предварительно настроенные конфигурации Vite для проектов YCLIENTS.
Требования
- Node.js: >= 16.
- Vite: >= 5.0.0.
- Для Vue конфигурации: Vue >= 3.0.0.
Связанные пакеты
@vitejs/plugin-vue
— плагин для Vue 3.@vitejs/plugin-vue-jsx
— плагин для Vue JSX.vite
— основной пакет Vite.
Установка
npm install --save-dev @yclients-configs/vite
Быстрый старт
Простой проект
// vite.config.ts import { defineBaseConfig } from '@yclients-configs/vite'; export default defineBaseConfig();
Vue проект
// vite.config.ts import { defineBaseConfig, defineVueConfig, createConfig, } from '@yclients-configs/vite'; export default await createConfig( defineBaseConfig(), defineVueConfig({ vueOptions: { // Настройки Vue плагина }, }), );
Доступные конфигурации
Пакет предоставляет следующие конфигурации и утилиты:
Экспорт | Описание |
| Базовая конфигурация с настройками по умолчанию. |
| Конфигурация для Vue.js проектов. |
| Утилита для объединения конфигураций. |
| Пресеты для специфических случаев. |
Базовая конфигурация
Базовая конфигурация включает в себя стандартные настройки для проектов YCLIENTS:
- Оптимизация сборки.
- Настройки сервера разработки.
- Поддержка source maps.
- Автоматическая очистка выходной директории.
Использование
// vite.config.ts import { defineBaseConfig } from '@yclients-configs/vite'; export default defineBaseConfig({ // Опциональные настройки Vite root: process.cwd(), // Корневая директория проекта (по умолчанию: process.cwd()) base: './', // Базовый публичный путь (по умолчанию: './') build: { outDir: 'dist', // Директория для сборки (по умолчанию: 'dist') target: 'esnext', // Целевая версия ES (по умолчанию: 'esnext') sourcemap: true, // Source maps (по умолчанию: true) minify: false, // Минификация (по умолчанию: false) emptyOutDir: true, // Очистка выходной директории (по умолчанию: true) }, server: { port: 3000, // Порт сервера разработки (по умолчанию: 3000) strictPort: true, // Строгий порт (по умолчанию: true) host: true, // Хост (по умолчанию: true) }, plugins: [], // Дополнительные плагины Vite });
Настройки по умолчанию
const defaultConfig = { root: process.cwd(), base: './', build: { outDir: 'dist', target: 'esnext', emptyOutDir: true, sourcemap: true, minify: false, }, server: { port: 3000, strictPort: true, host: true, }, };
Vue конфигурация
Vue конфигурация расширяет базовую конфигурацию, добавляя поддержку Vue.js:
- Поддержка Vue 3.
- Поддержка JSX/TSX с настраиваемыми опциями.
- Все настройки базовой конфигурации.
- Автоматическая настройка внешних зависимостей.
Использование Vue конфигурации
// vite.config.ts import { defineBaseConfig, defineVueConfig, createConfig, } from '@yclients-configs/vite'; export default await createConfig( defineBaseConfig(), defineVueConfig({ // Опции для Vue плагина vueOptions: { template: { compilerOptions: { // Настройки компилятора Vue }, }, }, // Опции для JSX плагина jsxOptions: { // Настройки @vitejs/plugin-vue-jsx optimize: true, }, }), );
Типизация Vue конфигурации
import type { Options as VueOptions } from '@vitejs/plugin-vue'; import type { Options as JsxOptions } from '@vitejs/plugin-vue-jsx'; interface VueConfigOptions { vueOptions?: VueOptions; jsxOptions?: JsxOptions; }
Пресеты
definePluginConfig
Пресет для создания конфигурации плагинов с предустановленными настройками:
- Настройка библиотеки с форматом ES.
- Автоматическое добавление manifestPlugin.
- Настройка имен файлов с хэшами для кэширования.
- Настройка алиасов для утилит YCLIENTS.
Пресет принимает только параметры типа PluginPresetOptions
и не позволяет переопределять настройки сборки.
Использование пресета
// vite.config.ts import { definePluginConfig } from '@yclients-configs/vite/presets'; export default definePluginConfig({ pluginName: 'my-plugin', });
Опции пресета
interface PluginPresetOptions { /** * Название плагина, используемое для именования выходных файлов * и идентификации в системе сборки */ pluginName: string; }
Утилиты
createConfig
Утилита для объединения нескольких конфигураций Vite в одну. Поддерживает как синхронные, так и асинхронные конфигурации. Возвращает Promise, поэтому требует использования await
.
Синхронное использование
import { createConfig, defineBaseConfig } from '@yclients-configs/vite'; export default await createConfig( defineBaseConfig(), // Дополнительные конфигурации { server: { port: 3000, }, }, { build: { rollupOptions: { external: ['lodash'], }, }, }, );
Асинхронное использование
import { createConfig, defineBaseConfig } from '@yclients-configs/vite'; export default await createConfig( defineBaseConfig(), // Асинхронные конфигурации async () => { const env = await loadEnv(); return { define: { __APP_ENV__: JSON.stringify(env), }, }; }, async () => { const pkg = await import('../package.json'); return { define: { __APP_VERSION__: JSON.stringify(pkg.version), }, }; }, );
Примеры использования
Пример 1: Простое веб-приложение
// vite.config.ts import { defineBaseConfig } from '@yclients-configs/vite'; export default defineBaseConfig({ resolve: { alias: { '@': './src', '@components': './src/components', }, }, build: { outDir: 'build', sourcemap: true, }, });
Пример 2: Vue компонент библиотека
// vite.config.ts import { defineBaseConfig, defineVueConfig, createConfig, } from '@yclients-configs/vite'; export default await createConfig( defineBaseConfig({ build: { outDir: 'build', sourcemap: true, }, }), defineVueConfig({ vueOptions: { template: { compilerOptions: { isCustomElement: (tag) => tag.startsWith('wc-'), }, }, }, }), );
Пример 3: Плагин с манифестом
// vite.config.ts import { definePluginConfig } from '@yclients-configs/vite/presets'; export default definePluginConfig({ pluginName: 'color-picker', });
Пример 4: Сложная конфигурация с условиями
// vite.config.ts import { createConfig, defineBaseConfig, defineVueConfig, } from '@yclients-configs/vite'; export default await createConfig( defineBaseConfig(), defineVueConfig(), // Условная конфигурация для разработки process.env.NODE_ENV === 'development' && { server: { port: 3001, open: true, }, }, // Условная конфигурация для продакшена process.env.NODE_ENV === 'production' && { build: { minify: 'terser', rollupOptions: { output: { manualChunks: { vendor: ['vue', 'vue-router'], }, }, }, }, }, );