diff --git a/docs/requirements.md b/docs/requirements.md index d11c9a1..20712a8 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -117,150 +117,43 @@ Monorepo библиотека с общими конфигами для TypeScri **Тип:** JSON-файлы для extends (без сборки) -**base.json:** -```json -{ - "compilerOptions": { - "strict": true, - "target": "ES2022", - "module": "ESNext", - "lib": ["ES2022"], - "moduleResolution": "bundler", - "resolveJsonModule": true, - "forceConsistentCasingInFileNames": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": false, - "allowUnreachableCode": false, - "allowUnusedLabels": false, - "allowSyntheticDefaultImports": true, - "removeComments": true, - "sourceMap": true, - "incremental": true, - "skipLibCheck": true, - "isolatedModules": true - } -} -``` +**base.json** — общие настройки для всех TS-проектов: +- strict: true, target: ES2022, module: ESNext, moduleResolution: bundler -**react.json:** -```json -{ - "extends": "./base.json", - "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], - "jsx": "react-jsx" - } -} -``` +**react.json** — для React + Vite: +- extends base + DOM libs, jsx: react-jsx, noEmit, allowImportingTsExtensions + +**node.json** — для NestJS/Node: +- extends base + commonjs module, node moduleResolution, decorators support ### @vigdorov/vite-config **Тип:** Функции-генераторы **Пресеты:** `spa`, `library` -**spa:** -```ts -import {spa} from '@vigdorov/vite-config'; +**spa** — подключает React plugin, алиасы, порт, proxy +**library** — lib mode сборка, external зависимости, форматы es/cjs -export default spa({ - port: 5176, - aliases: {'@': 'src'}, - proxy: {'/api': 'http://localhost:3003'}, -}); -``` - -**library:** -```ts -import {library} from '@vigdorov/vite-config'; - -export default library({ - entry: 'src/index.ts', - name: 'my-lib', - aliases: {'@': 'src'}, - external: ['react', 'react-dom'], - formats: ['es', 'cjs'], -}); -``` - -**Генератор spa:** -- Подключает @vitejs/plugin-react -- Преобразует aliases в resolve.alias с абсолютными путями -- Настраивает server.port и server.proxy -- Дефолты: base: "/", outDir: "dist" - -**Генератор library:** -- Настраивает build.lib (entry, name, formats) -- rollupOptions.external — исключает peer-зависимости -- fileName: index.mjs / index.cjs -- Алиасы работают так же как в SPA +Для кастомизации сверх параметров (define, manualChunks) — использовать `mergeConfig` из vite. ### @vigdorov/jest-config **Тип:** Функция-генератор - -```ts -import {jestConfig} from '@vigdorov/jest-config'; - -export default jestConfig({ - environment: 'jsdom', - aliases: {'@': 'src'}, -}); -``` - -**Базовый конфиг:** -- clearMocks: true -- collectCoverage: true -- coverageReporters: ['html', 'text', 'text-summary', 'lcov'] -- coverageDirectory: 'coverage' -- testMatch: ['**/__tests__/**/*.(j|t)s?(x)', '**/?(*.)+(spec|test).(j|t)s?(x)'] -- testPathIgnorePatterns: ['/node_modules/', '/dist/'] +- environment: node/jsdom +- aliases: единый формат с Vite - transform: @swc/jest -**Параметры:** -- environment: 'node' | 'jsdom' -- aliases: Record — преобразуется в moduleNameMapper - ### @vigdorov/playwright-config -**Тип:** Функция-генератор - -```ts -import {playwrightConfig} from '@vigdorov/playwright-config'; - -export default playwrightConfig({ - baseURL: 'http://localhost:5176', - testDir: 'e2e', - retries: 0, -}); -``` - -**Базовый конфиг:** -- timeout: 30000 -- retries: CI ? (params.retries ?? 2) : (params.retries ?? 0) -- reporter: CI ? 'html' : 'list' -- use.trace: 'on-first-retry' -- use.screenshot: 'only-on-failure' +**Тип:** Функция-генератор (CI-aware) - Три браузера: chromium, firefox, webkit +- retries: 0 локально / 2 в CI ### @vigdorov/knip-config **Тип:** Функция-генератор - -```ts -import {knipConfig} from '@vigdorov/knip-config'; - -export default knipConfig({ - entry: ['src/main.tsx'], -}); -``` - -**Базовый конфиг:** -- entry: params.entry ?? ['src/index.ts'] -- project: params.project ?? ['src/**/*.{ts,tsx,js,jsx}'] -- ignore: ['**/*.test.*', '**/*.spec.*', 'e2e/**', '**/*.d.ts', ...params.ignore] -- ignoreDependencies: params.ignoreDependencies ?? [] -- Knip завершается с exit code 1 при ошибках (используется в check-скрипте для блокировки сборки) +- entry, project, ignore, ignoreDependencies +- Exit code 1 при ошибках — блокирует сборку ## CI/CD @@ -275,7 +168,7 @@ export default knipConfig({ - Для каждого пакета в packages/ сравнивает версию с registry - Публикует только пакеты с новой версией -**Trigger:** только main, только push +**Trigger:** main, push + custom ### service.yaml для dev-configs @@ -318,7 +211,7 @@ dev-configs/ ├── packages/ │ ├── eslint/ → @vigdorov/eslint-config │ ├── prettier/ → @vigdorov/prettier-config -│ ├── typescript/ → @vigdorov/typescript-config +│ ├── typescript/ → @vigdorov/typescript-config (base, react, node) │ ├── vite/ → @vigdorov/vite-config │ ├── jest/ → @vigdorov/jest-config │ ├── playwright/ → @vigdorov/playwright-config diff --git a/package-lock.json b/package-lock.json index 29c08b1..5598fbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9936,7 +9936,7 @@ }, "packages/eslint": { "name": "@vigdorov/eslint-config", - "version": "1.0.0", + "version": "1.0.1", "dependencies": { "@stylistic/eslint-plugin": "^4.2.0", "eslint-plugin-unused-imports": "^4.1.4", @@ -10006,7 +10006,7 @@ }, "packages/typescript": { "name": "@vigdorov/typescript-config", - "version": "1.0.0" + "version": "1.1.0" }, "packages/vite": { "name": "@vigdorov/vite-config",