You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What changes, and for whom.site/ stops declaring five ESLint packages it never runs. Contributors get an install that matches what the project actually uses, and nobody has to work out which of two linters is authoritative.
Why now. Noticed while reading site/package.json for #179. It is unrelated to that migration and was deliberately kept out of it.
Current implementation facts
site/package.jsonlint is oxlint. Configuration lives in site/.oxlintrc.json.
There is no eslint.config.js, eslint.config.mjs, .eslintrc* or eslintConfig field anywhere under site/.
No site/ script invokes eslint, and no workflow does either.
The overlap is partly real: .oxlintrc.json enables react/rules-of-hooks and react/only-export-components, which are the oxlint equivalents of the two plugins listed. The rules are covered; the packages are not what covers them.
src/engine/ has its own real eslint.config.js carrying the determinism guard, and is out of scope here.
Suggested implementation
Confirm nothing under site/ resolves any of the five — including transitively through a config this issue has not found.
Remove them from site/package.json and regenerate site/package-lock.json; both docs workflows run npm --prefix site ci, so the lock must stay in sync.
Run npm --prefix site run check from a clean install.
If instead ESLint is meant to run in site/ and the configuration is what went missing, this issue is wrong and should be closed in favour of one that adds the config. Decide which before removing anything.
Done when
site/package.json declares no ESLint package that no site/ script or configuration uses.
site/package-lock.json is regenerated and npm --prefix site ci succeeds from a clean clone.
npm --prefix site run check passes with the same rules enforced as before — oxlint's react/rules-of-hooks and react/only-export-components still run and still fail on a violation.
No lint coverage is lost: a hooks-order violation and a mixed component/constant export are each still reported.
Non-goals
Changing which linter site/ uses, or its rule set.
Anything under src/engine/, whose ESLint configuration and determinism guard are real and load-bearing.
What changes, and for whom.
site/stops declaring five ESLint packages it never runs. Contributors get an install that matches what the project actually uses, and nobody has to work out which of two linters is authoritative.Why now. Noticed while reading
site/package.jsonfor #179. It is unrelated to that migration and was deliberately kept out of it.Current implementation facts
site/package.jsonlintisoxlint. Configuration lives insite/.oxlintrc.json.eslint.config.js,eslint.config.mjs,.eslintrc*oreslintConfigfield anywhere undersite/.site/script invokeseslint, and no workflow does either.site/package.jsonnonetheless declares five ESLint devDependencies:eslint,@eslint/js,typescript-eslint,eslint-plugin-react-hooks,eslint-plugin-react-refresh..oxlintrc.jsonenablesreact/rules-of-hooksandreact/only-export-components, which are the oxlint equivalents of the two plugins listed. The rules are covered; the packages are not what covers them.src/engine/has its own realeslint.config.jscarrying the determinism guard, and is out of scope here.Suggested implementation
site/resolves any of the five — including transitively through a config this issue has not found.site/package.jsonand regeneratesite/package-lock.json; both docs workflows runnpm --prefix site ci, so the lock must stay in sync.npm --prefix site run checkfrom a clean install.If instead ESLint is meant to run in
site/and the configuration is what went missing, this issue is wrong and should be closed in favour of one that adds the config. Decide which before removing anything.Done when
site/package.jsondeclares no ESLint package that nosite/script or configuration uses.site/package-lock.jsonis regenerated andnpm --prefix site cisucceeds from a clean clone.npm --prefix site run checkpasses with the same rules enforced as before — oxlint'sreact/rules-of-hooksandreact/only-export-componentsstill run and still fail on a violation.Non-goals
site/uses, or its rule set.src/engine/, whose ESLint configuration and determinism guard are real and load-bearing.site/sources, build, or the landing-page package migration in W69 — Consume the Reusable Landing-Page Package #179.