Repository navigation
Conversation
- ESLint 8 -> 10 with flat config (eslint.config.js). eslintrc support is gone in ESLint 10, and eslint-config-airbnb only supports ESLint 7-8, so the base is now @eslint/js recommended + Prettier - Prettier 2 -> 3, eslint-config-prettier 10, eslint-plugin-prettier 5 - Stylelint 14 -> 17, stylelint-config-standard 40, stylelint-prettier 5; drop stylelint-config-prettier (Stylelint 15 removed the rules it disabled) and lint SCSS with stylelint-config-standard-scss - Drop eslint-plugin-yml and the airbnb peer plugins - Playwright 1.64, @drupal/playwright 1.2, TypeScript 7, markdownlint-cli 0.49, @types/node 26, faker 10.6 - Override js-yaml, smol-toml and katex under markdownlint-cli to patched versions. Remaining npm audit finding is braces (no patched release) - Dependabot: weekly, grouped minor/patch PRs, Drupal core and lint-stack majors grouped, GitHub Actions monthly Claude-Session: https://claude.ai/code/session_012FKaDB3ZoovhEYXdXSdiUT
There was a problem hiding this comment.
🔵 Needs a closer look
.sass files are not covered by the SCSS Stylelint override and may be parsed or linted incorrectly.
0 open findings
What changed in this PR
Upgrades npm linting, formatting, testing, and Dependabot tooling.
Changes:
- Migrates ESLint to flat configuration.
- Updates Prettier, Stylelint, TypeScript, Playwright, and related dependencies.
- Groups Dependabot updates and adds security overrides.
| File | Description |
|---|---|
package.json |
Updates tooling dependencies and security overrides |
eslint.config.js |
Adds flat ESLint configuration |
.stylelintrc.json |
Updates Stylelint and SCSS configuration |
.github/dependabot.yml |
Groups and schedules dependency updates |
.eslintrc.json |
Removes obsolete ESLint configuration |
.eslintignore |
Removes obsolete ignore configuration |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Tested the root lint config against the org's theme repos (wudo, wunder-theme-base, drupal-theme) placed in web/themes/custom: - Parse custom JS as modules with JSX, as airbnb did, so Storybook stories and Vite entries don't fail with parse errors - Node globals for build tool config files, Jest globals for tests - Ignore storybook-static/ build output - Turn off selector-class-pattern, which rejects BEM class names Claude-Session: https://claude.ai/code/session_012FKaDB3ZoovhEYXdXSdiUT
|
Tested the root lint config against the org's theme repos, each copied into
None of the themes was lint-clean under the old config, so there's no compatibility to preserve, but Theme-side issues found along the way: |
Ticket GH-483
Fixes #483
Changes
.eslintrc.json/.eslintignorereplaced byeslint.config.js. ESLint 10 no longer reads eslintrc, andeslint-config-airbnbonly supports ESLint 7–8, so the base is now@eslint/jsrecommended +eslint-plugin-prettier. Custom module and theme JS is linted as browser scripts withDrupal,drupalSettings,onceandjQueryas globals..prettierrc.jsonunchanged.stylelint-config-standard40,stylelint-prettier5. Droppedstylelint-config-prettier(Stylelint 15 removed the rules it turned off) and the removedfunction-calc-no-invalidrule. SCSS files usestylelint-config-standard-scss, replacing theat-rule-no-unknownworkaround.eslint-plugin-yml,eslint-plugin-import,eslint-plugin-jsx-a11y,eslint-plugin-react.@playwright/test1.64,@drupal/playwright1.2,typescript7,markdownlint-cli0.49,@types/node26,@faker-js/faker10.6.overridespinjs-yaml,smol-tomlandkatexunder markdownlint-cli to patched versions. The only remaining finding isbraces(via Stylelint's globbing), which has no patched release.Supersedes #317, #339, #345, #346.
Independent of #482. With ESLint 10 the scaffolded
web/.eslintrc.jsonis ignored anyway.Testing
Enviroment: local DDEV (tooling only, no deploy needed)
Login: n/a
Instructions:
ddev npm ci && ddev npm run lintpassesvar foo="bar"to a custom module:ddev npm run lint:jsreportsno-unused-varsand Prettier errors@use,@mixinand@includeto a custom module:ddev npm run lint:cssparses it with no unknown at-rule errorsddev exec npx tsc --noEmitpassesddev exec npx playwright testpasses (7/7)Verified in wunderio/internal-mearra-main-data-system on top of #482's fixes: lint, tsc, Playwright 7/7 and GrumPHP all pass.
https://claude.ai/code/session_012FKaDB3ZoovhEYXdXSdiUT