2.4 KiB
description
| description |
|---|
| Lint coverage never drops below what Deno enforced; every Deno rule maps to an Oxlint rule, a plugin rule, the compiler, or our own rule |
Hard rule (2026-10-12): after the move, a repo has at least the lint coverage
it had under Deno: built-in rules (the recommended and jsr tags plus
opt-ins like camelcase, eqeqeq, guard-for-in, no-console,
no-eval, no-throw-literal, no-non-null-assertion,
verbatim-module-syntax), @hugoalh rules, and the custom plugins. Rules may
be added, never lost. Formatting may change. "Gap" is not an acceptable end
state: a Deno rule Oxlint lacks is replaced by a plugin rule or our own rule in
project-lint-plugin.
Before removing any line from configs.project, find what else covers it.
How the template mapped Deno's 97 rules
- Same rule in
configs.projectaterror. - Renamed equivalent:
no-new-symbol→no-new-native-nonconstructor;no-window→no-restricted-globals: ["error", "window"];ban-untagged-ignore→unicorn/no-abusive-eslint-disable;ban-unused-ignore,ban-unknown-rule-code→reportUnusedDisableDirectives;camelcase→ built-inid-match(naming-id-match). - Caught by the parser or
typeCheck:no-dupe-args,no-octal,no-await-in-sync-fn,no-import-assertions(TS2880),no-sloppy-imports(TS2835),verbatim-module-syntax(TS1484). no-slow-types:isolatedDeclarations, enforced byvp pack(TS9010) in packages.- Vacuous: JSX rules (no
.tsxexists) and Deno-only rules. @hugoalhrules map to Oxlint built-ins inconfigs.project.- import-check's CLI cycle check →
import/no-cycle.
The template's list in configs.project is the baseline to copy: curly,
guard-for-in, no-console, no-empty, no-regex-spaces,
no-restricted-globals, no-var, prefer-const, import/no-cycle,
import/no-relative-parent-imports, typescript/adjacent-overload-signatures,
typescript/consistent-type-imports, typescript/no-empty-interface,
typescript/no-explicit-any, typescript/no-namespace,
typescript/no-non-null-assertion, the two project/* rules,
unicorn/no-abusive-eslint-disable, id-match, and
typescript/switch-exhaustiveness-check with
considerDefaultExhaustiveForUnions.
Each migration PR states its parity mapping (or links the template's table in cunarist/eslint-plugin-explicit-types#1) so the user can check it.