Skip to content

feat(webpack): add format-schema rule with auto-fix - #195

Merged
alexander-akait merged 2 commits into
mainfrom
feat/format-schema-rule
Sep 12, 2026
Merged

alexander-akait merged 2 commits into
mainfrom
feat/format-schema-rule

Conversation

@alexander-akait

Copy link
Copy Markdown
Member

Summary

Ports webpack/tooling's format-schemas to the webpack/format-schema rule, so schema formatting is an ESLint auto-fix in the editor instead of a yarn fix:special round trip. It covers all four jobs the script does: key order, alphabetical definitions/properties, type-ordered oneOf/anyOf/allOf, and definitions kept in sync with the base schema (including tsType path rebasing and implements expansion). Verified byte-for-byte against the script: over webpack's 42 schemas scrambled (every object's keys reversed) plus one corrupted synced definition, eslint --fix and format-schemas --write produce identical output, and both restore the pristine files; the rule reports nothing on the unmodified schemas.

What kind of change does this PR introduce?

feat

Did you add tests for your changes?

Yes — the validation/webpack/schemas/ fixtures are linted by the repo's own eslint.config.js, so the rule runs over them on every npm run lint.

Does this PR introduce a breaking change?

No — the rule is recommended: false and ships only in the opt-in webpack/schemas config.

If relevant, what needs to be documented once your changes are merged or what have you already documented?

The README's webpack/schemas row now lists both rules. Note format-schemas still has to stay in webpack's lint:special unless the rule is adopted there, since the two do the same work.

Use of AI

Claude Code was used to port the script, and to build the harness that runs both implementations over the same scrambled schemas and diffs their output. The parity results and lint runs were verified before committing.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VMRMJTfRYkzN1N6GwmLbgp


Generated by Claude Code

Ports `webpack/tooling`'s format-schemas: key order, alphabetical
definitions/properties, type-ordered oneOf/anyOf/allOf, and definitions kept
in sync with the base schema.
@changeset-bot

changeset-bot Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7fe625e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
eslint-config-webpack Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

The allowed-keyword list and the key order had drifted apart: `allOf` was
ordered but reported as unknown.
@alexander-akait
alexander-akait merged commit 67a4786 into main Sep 12, 2026
12 checks passed
@alexander-akait
alexander-akait deleted the feat/format-schema-rule branch September 12, 2026 14:44
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.

1 participant