@ecss/config
v0.2.0
Published
ECSS config — schema, defineConfig helper, loader and project cache.
Readme
// ecss.config.ts
import { defineConfig } from '@ecss/config';
import { reactAdapter } from '@ecss/react-adapter';
export default defineConfig({
adapters: [reactAdapter()],
defaultAdapter: 'react',
});📦 Установка
npm i -D @ecss/configpnpm add -D @ecss/configyarn add -D @ecss/config🚀 Использование
@ecss/config — это слой конфигурации ECSS, не привязанный к конкретному сборщику. defineConfig используется в ecss.config.ts и даёт типы и автодополнение в IDE; плагины бандлеров (@ecss/vite-plugin и др.) читают конфиг через loadConfig.
Объектная форма:
// ecss.config.ts
import { defineConfig } from '@ecss/config';
import { reactAdapter } from '@ecss/react-adapter';
export default defineConfig({
adapters: [reactAdapter()],
defaultAdapter: 'react',
aliases: { '#/*': './src/*' },
globalImports: ['./src/tokens.ecss'],
});Функциональная форма — получает env вашего сборщика, что удобно для значений, зависящих от команды:
// ecss.config.ts
import { defineConfig } from '@ecss/config';
import type { ConfigEnv } from 'vite';
export default defineConfig<ConfigEnv>(({ command }) => ({
minifyNames: command === 'build',
enableDebug: command === 'serve',
}));Основные поля конфига:
adapters— адаптеры фреймворков, генерирующие обёртки для ECSS-блоков.defaultAdapter—idадаптера, применяемого к.ecss-файлам по умолчанию (null— без обёрток).aliases— алиасы путей (поддерживают суффикс-маску*), какpathsв TypeScript.globalImports— файлы, автоматически подключаемые как wildcard-импорты в начало каждого.ecss.generateDeclarations— писать ли.d.tsдля каждого.ecss(по умолчаниюtrue).enableDebug— компилировать@debugв рантайм-console.log(по умолчаниюfalse).minifyNames— сокращать сгенерированные идентификаторы до хешей (по умолчаниюfalse).runtimeValidation— включать рантайм-валидацию параметров черезconsole.warn(по умолчаниюfalse).
Полное описание всех полей — в документации.
🧩 API
defineConfig(config)/defineConfig(env => config)— хелпер дляecss.config.*: добавляет типы и автодополнение, поддерживает объектную и функциональную формы.loadConfig(projectRoot, env?)— находит и читаетecss.config.{ts,js,mts,…}в указанном каталоге, возвращаетEcssConfig(или{}, если файла нет). Функциональный конфиг вызывается с переданнымenv.readConfigCache(projectRoot)/writeConfigCache(projectRoot, config)— чтение и запись сериализованного снапшота конфига в<projectRoot>/.ecss/config.json; используется редакторным тулингом, которое не исполняет TypeScript.EcssConfig— тип объекта конфигурации.EcssConfigAdapter— минимальный контракт адаптера, на который ссылаетсяEcssConfig.adapters.EcssConfigCache— тип снапшота конфига (aliases,globalImports).
👨💻 Автор
Разработка и поддержка: Руслан Мартынов
Если нашёл баг или есть предложение — открывай issue или отправляй pull request.
📄 Лицензия
Распространяется под лицензией MIT.
