Releases: xojs/eslint-config-xo
Releases · xojs/eslint-config-xo
v0.53.2
v0.53.1
v0.53.0
Breaking
- Require TypeScript 6
Prettier integration
A new prettier option lets you combine the rules with Prettier:
export default defineConfig([
...eslintConfigXo({prettier: true}),
]);true— Runs Prettier as an ESLint rule using XO's Prettier style, and disables the stylistic rules that would conflict with it. Requiresprettierto be installed.'compat'— Only disables the stylistic rules that conflict with Prettier, for when you run Prettier separately (for example, from your editor).
Anything XO does not configure (like printWidth or Prettier plugins) still respects your .prettierrc, but XO's own style settings take precedence. prettier is an optional peer dependency.
CSS linting
.css files are now linted out of the box via @eslint/css: duplicate imports, empty blocks, invalid at-rules, unmatchable selectors, invalid named grid areas, and more.
New rules
unicorn/better-dom-traversingunicorn/class-reference-in-static-methodsunicorn/consistent-class-member-orderunicorn/consistent-compound-wordsunicorn/consistent-export-decorator-positionunicorn/consistent-json-file-readunicorn/consistent-optional-chainingunicorn/explicit-timer-delayunicorn/logical-assignment-operatorsunicorn/max-nested-callsunicorn/no-array-fill-with-reference-typeunicorn/no-array-from-fillunicorn/no-array-spliceunicorn/no-blob-to-fileunicorn/no-break-in-nested-loopunicorn/no-canvas-to-imageunicorn/no-computed-property-existence-checkunicorn/no-confusing-array-spliceunicorn/no-confusing-array-withunicorn/no-declarations-before-early-exitunicorn/no-duplicate-loopsunicorn/no-duplicate-set-valuesunicorn/no-error-property-assignmentunicorn/no-exports-in-scriptsunicorn/no-global-object-property-assignmentunicorn/no-incorrect-query-selectorunicorn/no-incorrect-template-string-interpolationunicorn/no-late-current-target-accessunicorn/no-mismatched-map-keyunicorn/no-negated-array-predicateunicorn/no-negated-comparisonunicorn/no-non-function-verb-prefixunicorn/no-object-methods-with-collectionsunicorn/no-optional-chaining-on-undeclared-variableunicorn/no-redundant-comparisonunicorn/no-return-array-pushunicorn/no-subtraction-comparisonunicorn/no-top-level-side-effectsunicorn/no-uncalled-methodunicorn/no-undeclared-class-membersunicorn/no-unnecessary-global-thisunicorn/no-unnecessary-nested-ternaryunicorn/no-unnecessary-spliceunicorn/no-unreadable-object-destructuringunicorn/no-unsafe-buffer-conversionunicorn/no-unsafe-property-keyunicorn/no-unsafe-string-replacementunicorn/no-unused-array-method-returnunicorn/no-useless-boolean-castunicorn/no-useless-coercionunicorn/no-useless-concatunicorn/no-useless-continueunicorn/no-useless-elseunicorn/no-useless-overrideunicorn/no-useless-recursionunicorn/no-useless-template-literalsunicorn/operator-assignmentunicorn/prefer-add-event-listener-optionsunicorn/prefer-array-from-mapunicorn/prefer-array-last-methodsunicorn/prefer-array-slice- [
unicorn/prefer-direct-iteration](https://...
v0.52.0
Breaking
- Require Node.js 22 6b715f3
New rules
Improvements
- Add eslint-plugin-jsdoc support ca9780b
- Add eslint-plugin-regexp support 2eba483
- Add Markdown support 2bb9c6c
- Add HTML support 5da39d4
- Make TypeScript optional for JavaScript-only projects 717184b
- Use
eslint-import-resolver-typescriptfor import resolution 600b604 naming-convention rule: Ignore all exotic/quoted keys bd171banaming-convention rule: Allow UPPER_CASE for static readonly class properties ce92257naming-convention rule: Allow UPPER_CASE for module-level const variables 0b4bcce- Add
??tono-mixed-operatorsgroups 9117295 - Require description for file-wide
eslint-disablecomments 55b6ae1 - Discourage npm packages with native alternatives 92549e8
- Remove deprecated rules 7e2747d
- Disable redundant ESLint rules for TypeScript files f474625
capitalized-comments: Don't capitalize commented-out code aedc832
v0.51.0
Breaking
- The package now exports a function instead of an array. Update your
eslint.config.js:
-export default eslintConfigXo;
+export default [...eslintConfigXo()];- Removed the
./spaceand./browsersub-path exports. Use thespaceandbrowseroptions instead:
export default [...eslintConfigXo({space: true, browser: true})];- Requires ESLint 10 and Node.js 20.19+.
Improvements
- Merged
eslint-config-xo-typescript: TypeScript rules are now included. No need to install a separate package. - Merged plugin configs from XO: Includes
eslint-plugin-unicorn,eslint-plugin-import-x,eslint-plugin-n,eslint-plugin-ava,@eslint-community/eslint-plugin-eslint-comments, and a built-inno-use-extend-nativerule. Previously these were only available through the XO CLI. - Added
semicolonoption - Added TypeScript declaration file
- Add
no-shadowrule 4cec7d2
v0.50.0
Breaking
- Require ESLint 10 874aefa
New rules
preserve-caught-error1e2cd5crequire-unicode-regexpe9736c2css/no-unmatchable-selectors7adc524css/no-duplicate-keyframe-selectors8b3d031css/font-family-fallbacksadcb144
Improvements
no-sequences: AddallowInParentheses: false391d4c8
v0.49.0
Breaking
- Require Node.js 20 dd5cf67
New rules
- Add
no-unused-private-class-membersrule 568f75f - Add
css/no-invalid-at-rule-placementrule 8d122ab - Add
css/no-invalid-named-grid-areasrule 9f5d7c2
v0.48.0
- Add
no-unassigned-varsrule 4082baa capitalized-comments: Support codespell (#91) 3b196ad
v0.47.0
v0.46.0
New rules
@stylistic/indent-binary-opsd91defd@stylistic/function-paren-newlinefb5e204@stylistic/block-spacingcb6b443@stylistic/multiline-ternary3dea281
Breaking
- Require Node.js 18.18
- Migrate to flat config and require ESLint 9 (#86) ec210f2
- Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide