Skip to content

feat: migrate all supported rules to oxlint#2865

Open
Jonas-C wants to merge 1 commit intomasterfrom
feat/oxlint
Open

feat: migrate all supported rules to oxlint#2865
Jonas-C wants to merge 1 commit intomasterfrom
feat/oxlint

Conversation

@Jonas-C
Copy link
Contributor

@Jonas-C Jonas-C commented Oct 29, 2025

Denne begynner å bli veldig klar. Jeg har slitt litt med å få code actions til å fungere i zed, men annet enn det synes jeg dette funker fint. Vi tar en liten hit til ytelse grunnet jsPlugins, men når oxlint integrerer de siste reglene vi mangler vil dette være veldig mye raskere enn ESLint. Dette er forsåvidt raskere enn eslint allerede nå. Man merker spesielt forskjellen når man faktisk utvikler.

eslint-plugin-import er avhengig av at eslint er installert. Dersom vi midlertidig går vekk fra import/no-extraneous-dependencies kan vi droppe nesten 1500 linjer med avhengigheter. PDD mistenker jeg at det er noe feil med zed-extensionen. Jeg sliter med å få visse code actions til å funke. Funker fint i neovim.

Det er også litt kluss med graphql-reglene våre i ndla-frontend og i graphql-api. Litt usikker på hvor dealbreaker det er. Kan hende at vi gjør lurt i å beholde ESLint-configen inntil videre.

  • import/order (støttes av oxfmt, automatisert)
  • copyright header (kan skrive eget plugin, men oxfmt planlegger å støtte det) (støttet via jsPlugins)
  • import/no-extraneous-dependencies (ikke støttet ennå) (støttet via jsPlugins)
  • react/no-deprecated (støttet via jsPlugins). Vårt behov dekkes nok av typescript/no-deprecated.
  • react-hooks/exhaustive-deps
  • typescript-eslint (fortsatt i alpha)
  • jsx-a11y/no-static-element-interactions (støtte via jsPlugins)
  • jsx-a11y/no-noninteractive-element-interactions (støtte via jsPlugins)
  • jsx-a11y/no-noninteractive-element-to-interactive-role (støtte via jsPlugins)
  • jsx-a11y/interactive-supports-focus (støtte via jsPlugins)
  • jsx-a11y/no-interactive-element-to-noninteractive-role (støtte via jsPlugins)
  • typescript-eslint/no-use-before-define (kommer i neste versjon av oxlint)

@Jonas-C Jonas-C force-pushed the feat/oxlint branch 3 times, most recently from 4d3c88d to 464c157 Compare November 11, 2025 07:44
@Jonas-C Jonas-C force-pushed the feat/oxlint branch 3 times, most recently from 02100a5 to db52caf Compare November 25, 2025 09:55
@Jonas-C Jonas-C force-pushed the feat/oxlint branch 4 times, most recently from fb05be8 to 7c1813c Compare February 11, 2026 12:18
@Jonas-C Jonas-C marked this pull request as ready for review February 13, 2026 11:02
@Jonas-C Jonas-C requested review from a team and jnatten February 13, 2026 11:02
Comment on lines +69 to +77
"lsp": {
"oxlint": {
"initialization_options": {
"settings": {
"fixKind": "all",
"typeAware": true
}
}
}
Copy link
Member

@gunnarvelle gunnarvelle Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testa å legge dette inn i zed, men usikker på om eg får det til å fungere. Får klager i licenses.ts:
image

Om eg kjører "yarn lint" får eg

Failed to parse oxlint configuration file.

  × Failed to load config: /home/gunnar/kode/ndla/frontend-packages/oxlint.config.ts
  │
  │ TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /home/gunnar/kode/ndla/frontend-packages/oxlint.config.ts
  │     at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:219:9)
  │     at defaultGetFormat (node:internal/modules/esm/get_format:245:36)
  │     at defaultLoad (node:internal/modules/esm/load:120:22)
  │     at async ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:580:32)
  │     at async ModuleJob._link (node:internal/modules/esm/module_job:154:19)```

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tror dette først løses av neste versjon av oxc-extensionen i zed, sier fra når den blir sluppet!

Copy link
Contributor

@amatho amatho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Fikk ikke copyright lint til å funke med nvim, men den funker med CLI så går fint


```lua
{
cmd = { "./node_modules/.bin/oxlint", "--lsp" }, -- Mason doesn't have an up-to-date version of xlint, so we use the locally installed one.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
cmd = { "./node_modules/.bin/oxlint", "--lsp" }, -- Mason doesn't have an up-to-date version of xlint, so we use the locally installed one.
cmd = { "./node_modules/.bin/oxlint", "--lsp" }, -- Mason doesn't have an up-to-date version of oxlint, so we use the locally installed one.

@Jonas-C Jonas-C force-pushed the feat/oxlint branch 9 times, most recently from 41c3264 to b9ae3c1 Compare February 24, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants