Repository navigation
feat(webpack): add format-schema rule with auto-fix - #195
Merged
Merged
Conversation
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 detectedLatest commit: 7fe625e The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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.
This was referenced Sep 12, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ports
webpack/tooling'sformat-schemasto thewebpack/format-schemarule, so schema formatting is an ESLint auto-fix in the editor instead of ayarn fix:specialround trip. It covers all four jobs the script does: key order, alphabeticaldefinitions/properties, type-orderedoneOf/anyOf/allOf, and definitions kept in sync with the base schema (includingtsTypepath rebasing andimplementsexpansion). Verified byte-for-byte against the script: over webpack's 42 schemas scrambled (every object's keys reversed) plus one corrupted synced definition,eslint --fixandformat-schemas --writeproduce 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 owneslint.config.js, so the rule runs over them on everynpm run lint.Does this PR introduce a breaking change?
No — the rule is
recommended: falseand ships only in the opt-inwebpack/schemasconfig.If relevant, what needs to be documented once your changes are merged or what have you already documented?
The README's
webpack/schemasrow now lists both rules. Noteformat-schemasstill has to stay in webpack'slint:specialunless 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