fix(eslint): ensure that packages in the same group as updated together (#30187)

This PR updates `migrations.json` for `@nx/eslint` and `@nx/angular` so
that `@typescript-eslint/*` and `@angular-eslint/*` packages that are
installed in the workspaces are updated to the same version.

I've updated it for v20 and v19, but if we need to go back further we
could. This will also require patch versions for each major that we want
to fix.

**Note:** Previously there were two entries for `@nx/esilnt@20.4.0` that
handles cases where one of `typescript-eslint` or
`@typescript-eslint/eslint-plugin` are > 8. The packages in both entries
overlap, so I collapsed them down to one entry that checks
`typescript-eslint > 8`.

## Current Behavior
If user has `@typescript-eslint/rule-tester` or
`@angular-eslint/test-utils` installed, our migrations do not update
these versions. This makes them out of sync with
`@typescript-eslint/utils`, etc. which can lead to problems.

## Expected Behavior
Packages in the same `@typescript-eslint/*` and `@angular-eslint/*` are
updated together. If they are not installed, we don't add them to the
workspace.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
This commit is contained in:
Jack Hsu 2025-02-26 14:07:03 -05:00 committed by GitHub
parent f156ea932d
commit 09ebf5f2da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 147 additions and 61 deletions

View File

@ -1698,16 +1698,6 @@
"path": "/nx-api/eslint/migrations/20.4.0-typescript-eslint-package-updates",
"type": "migration"
},
"/nx-api/eslint/migrations/20.4.0-@typescript-eslint-package-updates": {
"description": "",
"file": "generated/packages/eslint/migrations/20.4.0-@typescript-eslint-package-updates.json",
"hidden": false,
"name": "20.4.0-@typescript-eslint-package-updates",
"version": "20.4.0-beta.1",
"originalFilePath": "/packages/eslint",
"path": "/nx-api/eslint/migrations/20.4.0-@typescript-eslint-package-updates",
"type": "migration"
},
"/nx-api/eslint/migrations/add-file-extensions-to-overrides": {
"description": "Update ESLint flat config to include .cjs, .mjs, .cts, and .mts files in overrides (if needed)",
"file": "generated/packages/eslint/migrations/add-file-extensions-to-overrides.json",

View File

@ -1686,16 +1686,6 @@
"path": "eslint/migrations/20.4.0-typescript-eslint-package-updates",
"type": "migration"
},
{
"description": "",
"file": "generated/packages/eslint/migrations/20.4.0-@typescript-eslint-package-updates.json",
"hidden": false,
"name": "20.4.0-@typescript-eslint-package-updates",
"version": "20.4.0-beta.1",
"originalFilePath": "/packages/eslint",
"path": "eslint/migrations/20.4.0-@typescript-eslint-package-updates",
"type": "migration"
},
{
"description": "Update ESLint flat config to include .cjs, .mjs, .cts, and .mts files in overrides (if needed)",
"file": "generated/packages/eslint/migrations/add-file-extensions-to-overrides.json",

View File

@ -21,6 +21,22 @@
"@angular-eslint/utils": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/schematics": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/test-utils": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/builder": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/bundled-angular-compiler": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
}
},
"aliases": [],

View File

@ -22,6 +22,22 @@
"@angular-eslint/utils": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/schematics": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/test-utils": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/builder": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/bundled-angular-compiler": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
}
},
"aliases": [],

View File

@ -22,6 +22,22 @@
"@angular-eslint/utils": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/schematics": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/test-utils": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/builder": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/bundled-angular-compiler": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
}
},
"aliases": [],

View File

@ -4,7 +4,19 @@
"packages": {
"@typescript-eslint/parser": { "version": "^7.16.0" },
"@typescript-eslint/eslint-plugin": { "version": "^7.16.0" },
"@typescript-eslint/utils": { "version": "^7.16.0" }
"@typescript-eslint/utils": { "version": "^7.16.0" },
"@typescript-eslint/rule-tester": {
"version": "^7.16.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/scope-manager": {
"version": "^7.16.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/typescript-estree": {
"version": "^7.16.0",
"alwaysAddToPackageJson": false
}
},
"aliases": [],
"description": "",

View File

@ -1,18 +0,0 @@
{
"name": "20.4.0-@typescript-eslint-package-updates",
"version": "20.4.0-beta.1",
"requires": { "@typescript-eslint/eslint-plugin": ">8.0.0 <8.19.0" },
"packages": {
"typescript-eslint": { "version": "^8.19.0" },
"@typescript-eslint/parser": { "version": "^8.19.0" },
"@typescript-eslint/eslint-plugin": { "version": "^8.19.0" },
"@typescript-eslint/utils": { "version": "^8.19.0" }
},
"aliases": [],
"description": "",
"hidden": false,
"implementation": "",
"path": "/packages/eslint",
"schema": null,
"type": "migration"
}

View File

@ -4,9 +4,21 @@
"requires": { "typescript-eslint": ">8.0.0 <8.19.0" },
"packages": {
"typescript-eslint": { "version": "^8.19.0" },
"@typescript-eslint/parser": { "version": "^8.19.0" },
"@typescript-eslint/eslint-plugin": { "version": "^8.19.0" },
"@typescript-eslint/utils": { "version": "^8.19.0" }
"@typescript-eslint/parser": { "version": "^8.19.0" },
"@typescript-eslint/utils": { "version": "^8.19.0" },
"@typescript-eslint/rule-tester": {
"version": "^8.19.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/scope-manager": {
"version": "^8.19.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/typescript-estree": {
"version": "^8.19.0",
"alwaysAddToPackageJson": false
}
},
"aliases": [],
"description": "",

View File

@ -1049,6 +1049,22 @@
"@angular-eslint/utils": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/schematics": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/test-utils": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/builder": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
},
"@angular-eslint/bundled-angular-compiler": {
"version": "^18.0.1",
"alwaysAddToPackageJson": false
}
}
},
@ -1368,6 +1384,22 @@
"@angular-eslint/utils": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/schematics": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/test-utils": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/builder": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
},
"@angular-eslint/bundled-angular-compiler": {
"version": "^19.0.0",
"alwaysAddToPackageJson": false
}
}
},
@ -1410,6 +1442,22 @@
"@angular-eslint/utils": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/schematics": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/test-utils": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/builder": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
},
"@angular-eslint/bundled-angular-compiler": {
"version": "^19.0.2",
"alwaysAddToPackageJson": false
}
}
},

View File

@ -104,6 +104,18 @@
},
"@typescript-eslint/utils": {
"version": "^7.16.0"
},
"@typescript-eslint/rule-tester": {
"version": "^7.16.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/scope-manager": {
"version": "^7.16.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/typescript-estree": {
"version": "^7.16.0",
"alwaysAddToPackageJson": false
}
}
},
@ -116,34 +128,26 @@
"typescript-eslint": {
"version": "^8.19.0"
},
"@typescript-eslint/parser": {
"version": "^8.19.0"
},
"@typescript-eslint/eslint-plugin": {
"version": "^8.19.0"
},
"@typescript-eslint/utils": {
"version": "^8.19.0"
}
}
},
"20.4.0-@typescript-eslint": {
"version": "20.4.0-beta.1",
"requires": {
"@typescript-eslint/eslint-plugin": ">8.0.0 <8.19.0"
},
"packages": {
"typescript-eslint": {
"version": "^8.19.0"
},
"@typescript-eslint/parser": {
"version": "^8.19.0"
},
"@typescript-eslint/eslint-plugin": {
"version": "^8.19.0"
},
"@typescript-eslint/utils": {
"version": "^8.19.0"
},
"@typescript-eslint/rule-tester": {
"version": "^8.19.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/scope-manager": {
"version": "^8.19.0",
"alwaysAddToPackageJson": false
},
"@typescript-eslint/typescript-estree": {
"version": "^8.19.0",
"alwaysAddToPackageJson": false
}
}
}