- node.json: commonjs, decorators, node moduleResolution - react.json: noEmit, allowImportingTsExtensions, moduleDetection - Bump @vigdorov/typescript-config to 1.1.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vigdorov/dev-configs
Набор общих конфигов для TypeScript-проектов. Единые правила линтинга, форматирования, сборки и тестирования.
Установка
Добавь в .npmrc проекта:
@vigdorov:registry=https://git.vigdorov.ru/api/packages/vigdorov/npm/
Затем устанавливай нужные пакеты:
npm i -D @vigdorov/prettier-config @vigdorov/eslint-config @vigdorov/typescript-config
Пакеты
@vigdorov/prettier-config
Единый стиль форматирования: 120 символов, 4 пробела, одинарные кавычки.
// prettier.config.js
import config from '@vigdorov/prettier-config';
export default config;
@vigdorov/eslint-config
ESLint 9 flat config. Три пресета: base (любой TS-проект), react (фронтенд), node (бэкенд).
// eslint.config.js — React-проект
import {react} from '@vigdorov/eslint-config';
export default react();
// eslint.config.js — NestJS-проект
import {node} from '@vigdorov/eslint-config';
export default node();
Кастомизация через callback:
import {react} from '@vigdorov/eslint-config';
export default react((configs) => [
...configs,
{
rules: {
'no-console': 'off',
},
},
]);
@vigdorov/typescript-config
Базовые tsconfig для наследования.
// tsconfig.json — React-проект
{
"extends": "@vigdorov/typescript-config/react",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": ["src"]
}
// tsconfig.json — NestJS-проект
{
"extends": "@vigdorov/typescript-config/node",
"compilerOptions": {
"outDir": "dist",
"baseUrl": "./"
}
}
@vigdorov/vite-config
Конфиг Vite для SPA-приложений и библиотек.
// vite.config.ts — SPA
import {spa} from '@vigdorov/vite-config';
export default spa({
port: 5176,
aliases: {'@': 'src'},
proxy: {'/api': 'http://localhost:3003'},
});
// vite.config.ts — библиотека
import {library} from '@vigdorov/vite-config';
export default library({
entry: 'src/index.ts',
name: 'my-lib',
external: ['react', 'react-dom'],
});
| Параметр (spa) | По умолчанию | Описание |
|---|---|---|
port |
5173 |
Порт dev-сервера |
aliases |
— | Алиасы путей ({'@': 'src'}) |
proxy |
— | Проксирование запросов |
base |
'/' |
Base URL |
outDir |
'dist' |
Папка сборки |
| Параметр (library) | По умолчанию | Описание |
|---|---|---|
entry |
— | Точка входа (обязательный) |
name |
— | Имя библиотеки (обязательный) |
aliases |
— | Алиасы путей |
external |
[] |
Зависимости, исключаемые из бандла |
formats |
['es', 'cjs'] |
Форматы выходных файлов |
@vigdorov/jest-config
Jest с быстрой трансформацией через SWC. Алиасы в едином формате с Vite.
// jest.config.ts
import {jestConfig} from '@vigdorov/jest-config';
export default jestConfig({
environment: 'jsdom',
aliases: {'@': 'src'},
});
| Параметр | По умолчанию | Описание |
|---|---|---|
environment |
'node' |
'node' для бэкенда, 'jsdom' для фронтенда |
aliases |
— | Алиасы путей (формат как в Vite) |
Папку
coverage/нужно добавить в.gitignoreпроекта.
@vigdorov/playwright-config
E2E-тесты в трёх браузерах: Chromium, Firefox, WebKit. Автоматически адаптируется к CI-окружению.
// playwright.config.ts
import {playwrightConfig} from '@vigdorov/playwright-config';
export default playwrightConfig({
baseURL: 'http://localhost:5176',
});
| Параметр | По умолчанию | Описание |
|---|---|---|
baseURL |
— | URL приложения (обязательный) |
testDir |
'e2e' |
Папка с тестами |
retries |
0 (локально) / 2 (CI) |
Количество ретраев |
@vigdorov/knip-config
Поиск неиспользуемого кода: файлы, экспорты, зависимости. Завершается с ошибкой если находит проблемы — используй в check-скрипте для блокировки сборки.
// knip.config.ts
import {knipConfig} from '@vigdorov/knip-config';
export default knipConfig({
entry: ['src/main.tsx'],
});
| Параметр | По умолчанию | Описание |
|---|---|---|
entry |
['src/index.ts'] |
Точки входа |
project |
['src/**/*.{ts,tsx,js,jsx}'] |
Файлы проекта |
ignore |
['**/*.test.*', '**/*.spec.*', 'e2e/**', '**/*.d.ts'] |
Игнорируемые паттерны |
ignoreDependencies |
[] |
Зависимости, которые не проверять |
Рекомендуемые скрипты
{
"scripts": {
"dev": "vite",
"build": "npm run check && vite build",
"check": "knip",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --write src",
"test": "jest",
"e2e": "playwright test"
}
}