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` проходила зелёной). Добавлен
|
ветке `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 и
|
- Отдельно решить, должен ли обычный CSS проходить проверку undefined tokens и
|
||||||
hardcoded colors наравне со Svelte styles.
|
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).
|
- Решить, должен ли unused audit стать fail-режимом (см. Q7a).
|
||||||
|
- Новые правила подключать только после fixtures, `test:rules` и baseline.
|
||||||
|
|
||||||
### Q8. Новые автоматические правила
|
### Q8. Новые автоматические правила
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,9 @@
|
|||||||
`eslint-plugin-svelte`) навешаны на UI-код (`src/lib/components/**`,
|
`eslint-plugin-svelte`) навешаны на UI-код (`src/lib/components/**`,
|
||||||
`src/routes/**`). Scoped-пути двигаются вместе с папками: не оставлять
|
`src/routes/**`). Scoped-пути двигаются вместе с папками: не оставлять
|
||||||
устаревшие пути в `eslint.config.js`.
|
устаревшие пути в `eslint.config.js`.
|
||||||
|
- Базовый `js.configs.recommended` + `globals.node` навешаны на инфраструктуру
|
||||||
|
линтинга: `eslint-plugins/**/*.js` и `scripts/**/*.mjs` (Q7c).
|
||||||
|
TS/svelte-рекомендации туда не подключаются.
|
||||||
- Для `*.svelte` выключен `prefer-const` (пропсы в Svelte 5 пишутся через
|
- Для `*.svelte` выключен `prefer-const` (пропсы в Svelte 5 пишутся через
|
||||||
`let`).
|
`let`).
|
||||||
- `allowDefaultProject` перечисляет test-файлы и фикстуры точечно (glob'ы с `**`
|
- `allowDefaultProject` перечисляет test-файлы и фикстуры точечно (glob'ы с `**`
|
||||||
|
|||||||
@@ -11,6 +11,12 @@ import i18nPlugin from "./eslint-plugins/i18n/index.js";
|
|||||||
// Новый код редизайна: к нему применяем полные recommended-наборы уже сейчас.
|
// Новый код редизайна: к нему применяем полные recommended-наборы уже сейчас.
|
||||||
const newCode = ["**/src/lib/components/**", "**/src/routes/**"];
|
const newCode = ["**/src/lib/components/**", "**/src/routes/**"];
|
||||||
|
|
||||||
|
// Инфраструктура линтинга: сами плагины и скрипты. Это не продуктовый код, но
|
||||||
|
// он влияет на все гейты, поэтому к нему тоже применяется базовый JS
|
||||||
|
// recommended. Полные TS/svelte-наборы здесь не подключаются: файлы .mjs и
|
||||||
|
// конфиги проверяются только базовым набором.
|
||||||
|
const toolingFiles = ["**/eslint-plugins/**/*.js", "**/scripts/**/*.mjs"];
|
||||||
|
|
||||||
// Полные recommended-наборы — только на новый код (см. ниже, блок перед prettier).
|
// Полные recommended-наборы — только на новый код (см. ниже, блок перед prettier).
|
||||||
const jsRecommended = Array.isArray(js.configs.recommended)
|
const jsRecommended = Array.isArray(js.configs.recommended)
|
||||||
? 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-наборы — только на новый код.
|
// Полные recommended-наборы — только на новый код.
|
||||||
...[
|
...[
|
||||||
...jsRecommended.map((cfg) => ({
|
...jsRecommended.map((cfg) => ({
|
||||||
...cfg,
|
...cfg,
|
||||||
files: newCode,
|
files: newCode,
|
||||||
})),
|
})),
|
||||||
|
...jsRecommended.map((cfg) => ({
|
||||||
|
...cfg,
|
||||||
|
files: toolingFiles,
|
||||||
|
})),
|
||||||
...tseslint.configs.recommended.map((cfg) => ({
|
...tseslint.configs.recommended.map((cfg) => ({
|
||||||
...cfg,
|
...cfg,
|
||||||
files: newCode,
|
files: newCode,
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
// (adapter-static): /foo -> foo.html | foo/index.html, MIME по расширению.
|
// (adapter-static): /foo -> foo.html | foo/index.html, MIME по расширению.
|
||||||
// Запуск: pnpm build && node scripts/serve-static.mjs --port 4173
|
// Запуск: pnpm build && node scripts/serve-static.mjs --port 4173
|
||||||
import { createServer } from "node:http";
|
import { createServer } from "node:http";
|
||||||
import { readFileSync, existsSync, statSync } from "node:fs";
|
import { readFileSync, statSync } from "node:fs";
|
||||||
import { extname, join, resolve } from "node:path";
|
import { extname, join } from "node:path";
|
||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from "node:url";
|
||||||
|
|
||||||
const portIndex = process.argv.indexOf("--port");
|
const portIndex = process.argv.indexOf("--port");
|
||||||
|
|||||||
Reference in New Issue
Block a user