vigdorov ac30ac1e2b
All checks were successful
continuous-integration/drone/push Build is passing
fix: move capitalized-comments from @stylistic to core rules
capitalized-comments is not a @stylistic rule, it's a core ESLint rule.
Bump @vigdorov/eslint-config to 1.0.1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 00:02:49 +03:00
2026-03-16 23:40:22 +03:00
2026-03-16 23:40:22 +03:00
2026-03-16 23:40:22 +03:00
2026-03-16 23:40:22 +03:00

@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"
    }
}
Description
No description provided
Readme 226 KiB
Languages
TypeScript 100%