mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
chore: lint rules for scripts
This commit is contained in:
@@ -432,13 +432,35 @@ file-result-инструментам.
|
||||
ветке `from` (смена `clamp(t, 0, 100)` на `0, 90` проходила зелёной). Добавлен
|
||||
отдельный тест на производный кламп; после этого мутация падает.
|
||||
|
||||
#### Q7c–Q7d. Оставшиеся направления
|
||||
#### Q7c. Базовый JS recommended для инфраструктуры линтинга
|
||||
|
||||
**Статус:** выполнен. `eslint-plugins/**` и `scripts/**` больше не вне линта.
|
||||
|
||||
- `web/eslint.config.js`:
|
||||
`toolingFiles = ["**/eslint-plugins/**/*.js", "**/scripts/**/*.mjs"]` получают
|
||||
`js.configs.recommended` плюс `languageOptions` с `globals.node` (иначе
|
||||
`no-undef` ругается на `console`, `process` и `URL` в Node-скриптах).
|
||||
- Полные TS/svelte-наборы туда не подключаются: это `.mjs` и конфиги, а не
|
||||
продуктовый код.
|
||||
- Масштаб оказался небольшим: 28 проблем, из них 26 — `no-undef` на
|
||||
Node-глобалах и только 2 настоящие: мёртвые импорты `existsSync` и `resolve` в
|
||||
`scripts/serve-static.mjs`. Линтер сразу нашёл пыль в инфраструктуре, для
|
||||
которой его раньше не было.
|
||||
- `eslint-plugins/**` дал ноль проблем, а новые тесты `scripts/__tests__` тоже
|
||||
попали под правило.
|
||||
- Проверено пробой: после включения неиспользуемая переменная и вызов
|
||||
неопределённого глобала в `scripts/` дают ошибки, то есть правило применилось,
|
||||
а не молча пропустило файлы.
|
||||
|
||||
#### Q7d. Оставшиеся направления
|
||||
|
||||
- Покрыть базовым JS recommended сам код ESLint-плагинов и lint-скриптов.
|
||||
- Отдельно решить, должен ли обычный CSS проходить проверку undefined tokens и
|
||||
hardcoded colors наравне со Svelte styles.
|
||||
- Новые правила подключать только после fixtures, `test:rules` и baseline.
|
||||
- Решить, должны ли сами конфиги (`eslint.config.js`, `postcss.config.js`,
|
||||
`stylelint.config.js`, `svelte.config.js`, `vite.config.ts`) тоже попасть под
|
||||
рекомендации: сейчас вне `toolingFiles`.
|
||||
- Решить, должен ли unused audit стать fail-режимом (см. Q7a).
|
||||
- Новые правила подключать только после fixtures, `test:rules` и baseline.
|
||||
|
||||
### Q8. Новые автоматические правила
|
||||
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
`eslint-plugin-svelte`) навешаны на UI-код (`src/lib/components/**`,
|
||||
`src/routes/**`). Scoped-пути двигаются вместе с папками: не оставлять
|
||||
устаревшие пути в `eslint.config.js`.
|
||||
- Базовый `js.configs.recommended` + `globals.node` навешаны на инфраструктуру
|
||||
линтинга: `eslint-plugins/**/*.js` и `scripts/**/*.mjs` (Q7c).
|
||||
TS/svelte-рекомендации туда не подключаются.
|
||||
- Для `*.svelte` выключен `prefer-const` (пропсы в Svelte 5 пишутся через
|
||||
`let`).
|
||||
- `allowDefaultProject` перечисляет test-файлы и фикстуры точечно (glob'ы с `**`
|
||||
|
||||
@@ -11,6 +11,12 @@ import i18nPlugin from "./eslint-plugins/i18n/index.js";
|
||||
// Новый код редизайна: к нему применяем полные recommended-наборы уже сейчас.
|
||||
const newCode = ["**/src/lib/components/**", "**/src/routes/**"];
|
||||
|
||||
// Инфраструктура линтинга: сами плагины и скрипты. Это не продуктовый код, но
|
||||
// он влияет на все гейты, поэтому к нему тоже применяется базовый JS
|
||||
// recommended. Полные TS/svelte-наборы здесь не подключаются: файлы .mjs и
|
||||
// конфиги проверяются только базовым набором.
|
||||
const toolingFiles = ["**/eslint-plugins/**/*.js", "**/scripts/**/*.mjs"];
|
||||
|
||||
// Полные recommended-наборы — только на новый код (см. ниже, блок перед prettier).
|
||||
const jsRecommended = Array.isArray(js.configs.recommended)
|
||||
? js.configs.recommended
|
||||
@@ -175,12 +181,26 @@ export default tseslint.config(
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
files: toolingFiles,
|
||||
languageOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
globals: {
|
||||
...globals.node,
|
||||
},
|
||||
},
|
||||
},
|
||||
// Полные recommended-наборы — только на новый код.
|
||||
...[
|
||||
...jsRecommended.map((cfg) => ({
|
||||
...cfg,
|
||||
files: newCode,
|
||||
})),
|
||||
...jsRecommended.map((cfg) => ({
|
||||
...cfg,
|
||||
files: toolingFiles,
|
||||
})),
|
||||
...tseslint.configs.recommended.map((cfg) => ({
|
||||
...cfg,
|
||||
files: newCode,
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// (adapter-static): /foo -> foo.html | foo/index.html, MIME по расширению.
|
||||
// Запуск: pnpm build && node scripts/serve-static.mjs --port 4173
|
||||
import { createServer } from "node:http";
|
||||
import { readFileSync, existsSync, statSync } from "node:fs";
|
||||
import { extname, join, resolve } from "node:path";
|
||||
import { readFileSync, statSync } from "node:fs";
|
||||
import { extname, join } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const portIndex = process.argv.indexOf("--port");
|
||||
|
||||
Reference in New Issue
Block a user