Skip to content

Commit f696dad

Browse files
chore: use pnpm catalog (#12047)
* chore: use pnpm catalog Closes #11266 * wip * wip * wip * add @vitest/* * rest of packages * wip * wip * test: correct snapshot --------- Co-authored-by: Josh Goldberg ✨ <[email protected]>
1 parent 2d4af77 commit f696dad

File tree

23 files changed

+441
-291
lines changed

23 files changed

+441
-291
lines changed

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@
5757
"@eslint/compat": "^2.0.2",
5858
"@eslint/config-helpers": "^0.5.2",
5959
"@eslint/eslintrc": "^3.3.3",
60-
"@eslint/js": "^10.0.1",
60+
"@eslint/js": "catalog:",
6161
"@nx/devkit": "22.3.3",
6262
"@nx/js": "22.3.3",
6363
"@nx/vitest": "22.3.3",
6464
"@nx/workspace": "22.3.3",
6565
"@swc/core": "^1.15.8",
6666
"@types/debug": "^4.1.12",
67-
"@types/natural-compare": "^1.4.3",
68-
"@types/node": "^22.19.3",
67+
"@types/natural-compare": "catalog:",
68+
"@types/node": "catalog:",
6969
"@types/semver": "^7.7.1",
7070
"@types/yargs": "^17.0.35",
7171
"@typescript-eslint/eslint-plugin": "workspace:^",
@@ -75,11 +75,11 @@
7575
"@typescript-eslint/types": "workspace:^",
7676
"@typescript-eslint/typescript-estree": "workspace:^",
7777
"@typescript-eslint/utils": "workspace:^",
78-
"@vitest/coverage-v8": "^4.0.18",
79-
"@vitest/eslint-plugin": "1.6.9",
78+
"@vitest/coverage-v8": "catalog:",
79+
"@vitest/eslint-plugin": "1.6.5",
8080
"console-fail-test": "^0.6.1",
8181
"cspell": "^9.4.0",
82-
"eslint": "^10.0.0",
82+
"eslint": "catalog:",
8383
"eslint-plugin-eslint-plugin": "^7.2.0",
8484
"eslint-plugin-import": "^2.32.0",
8585
"eslint-plugin-jsdoc": "^50.8.0",
@@ -91,20 +91,20 @@
9191
"eslint-plugin-regexp": "^2.10.0",
9292
"eslint-plugin-unicorn": "^59.0.1",
9393
"execa": "7.2.0",
94-
"globals": "^16.5.0",
94+
"globals": "catalog:",
9595
"husky": "^9.1.7",
9696
"knip": "5.81.0",
9797
"lint-staged": "^15.5.2",
9898
"markdownlint-cli": "^0.47.0",
9999
"nx": "22.3.3",
100-
"prettier": "3.8.0",
101-
"rimraf": "^5.0.10",
100+
"prettier": "catalog:",
101+
"rimraf": "catalog:",
102102
"semver": "7.7.3",
103-
"tsx": "*",
104-
"typescript": ">=4.8.4 <6.0.0",
103+
"tsx": "catalog:",
104+
"typescript": "catalog:",
105105
"typescript-eslint": "workspace:^",
106106
"vite": "7.3.0",
107-
"vitest": "^4.0.18",
107+
"vitest": "catalog:",
108108
"yargs": "17.7.2"
109109
},
110110
"packageManager": "[email protected]+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a",

packages/ast-spec/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,17 @@
4949
"@babel/eslint-parser": "^7.28.5",
5050
"@babel/parser": "^7.28.5",
5151
"@microsoft/api-extractor": "^7.55.2",
52-
"@types/babel__code-frame": "^7.0.6",
52+
"@types/babel__code-frame": "catalog:",
5353
"@types/babel__core": "^7.20.5",
5454
"@typescript-eslint/typescript-estree": "workspace:*",
55-
"@vitest/coverage-v8": "^4.0.18",
56-
"@vitest/pretty-format": "^4.0.18",
57-
"@vitest/utils": "^4.0.18",
58-
"eslint": "*",
59-
"glob": "*",
60-
"rimraf": "*",
61-
"typescript": "*",
62-
"vitest": "^4.0.18"
55+
"@vitest/coverage-v8": "catalog:",
56+
"@vitest/pretty-format": "catalog:",
57+
"@vitest/utils": "catalog:",
58+
"eslint": "catalog:",
59+
"glob": "catalog:",
60+
"rimraf": "catalog:",
61+
"typescript": "catalog:",
62+
"vitest": "catalog:"
6363
},
6464
"nx": {
6565
"name": "ast-spec",

packages/eslint-plugin-internal/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
"@typescript-eslint/scope-manager": "workspace:*",
2929
"@typescript-eslint/type-utils": "workspace:*",
3030
"@typescript-eslint/utils": "workspace:*",
31-
"prettier": "3.8.0"
31+
"prettier": "catalog:"
3232
},
3333
"devDependencies": {
34-
"@vitest/coverage-v8": "^4.0.18",
35-
"eslint": "*",
36-
"rimraf": "*",
37-
"vitest": "^4.0.18"
34+
"@vitest/coverage-v8": "catalog:",
35+
"eslint": "catalog:",
36+
"rimraf": "catalog:",
37+
"vitest": "catalog:"
3838
},
3939
"nx": {
4040
"name": "eslint-plugin-internal",

packages/eslint-plugin/package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,27 +69,27 @@
6969
},
7070
"devDependencies": {
7171
"@types/json-schema": "^7.0.15",
72-
"@types/mdast": "^4.0.4",
73-
"@types/natural-compare": "*",
74-
"@types/react": "^18.3.21",
72+
"@types/mdast": "catalog:",
73+
"@types/natural-compare": "catalog:",
74+
"@types/react": "catalog:",
7575
"@typescript-eslint/rule-schema-to-typescript-types": "workspace:*",
7676
"@typescript-eslint/rule-tester": "workspace:*",
77-
"@vitest/coverage-v8": "^4.0.18",
78-
"ajv": "^6.12.6",
79-
"eslint": "*",
80-
"json-schema": "*",
77+
"@vitest/coverage-v8": "catalog:",
78+
"ajv": "catalog:",
79+
"eslint": "catalog:",
80+
"json-schema": "catalog:",
8181
"markdown-table": "^3.0.4",
8282
"marked": "^15.0.12",
83-
"mdast-util-from-markdown": "^2.0.2",
84-
"mdast-util-mdx": "^3.0.0",
83+
"mdast-util-from-markdown": "catalog:",
84+
"mdast-util-mdx": "catalog:",
8585
"micromark-extension-mdxjs": "^3.0.0",
86-
"prettier": "3.8.0",
87-
"rimraf": "*",
86+
"prettier": "catalog:",
87+
"rimraf": "catalog:",
8888
"title-case": "^4.3.2",
89-
"tsx": "*",
90-
"typescript": "*",
89+
"tsx": "catalog:",
90+
"typescript": "catalog:",
9191
"unist-util-visit": "^5.0.0",
92-
"vitest": "^4.0.18"
92+
"vitest": "catalog:"
9393
},
9494
"peerDependencies": {
9595
"@typescript-eslint/parser": "workspace:^",

packages/integration-tests/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
"typecheck": "pnpm -w exec nx typecheck"
1919
},
2020
"devDependencies": {
21-
"@vitest/coverage-v8": "^4.0.18",
22-
"eslint": "*",
23-
"vitest": "^4.0.18"
21+
"@vitest/coverage-v8": "catalog:",
22+
"eslint": "catalog:",
23+
"vitest": "catalog:",
24+
"yaml": "catalog:"
2425
},
2526
"nx": {
2627
"name": "integration-tests",

packages/integration-tests/tools/pack-packages.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import * as os from 'node:os';
1515
import * as path from 'node:path';
1616
import { pathToFileURL } from 'node:url';
1717
import { promisify } from 'node:util';
18+
import yaml from 'yaml';
1819

1920
import rootPackageJson from '../../../package.json';
2021

@@ -26,7 +27,8 @@ interface PackageJSON {
2627
private?: boolean;
2728
}
2829

29-
const PACKAGES_DIR = path.resolve(__dirname, '..', '..');
30+
const ROOT_DIR = path.resolve(__dirname, '..', '..', '..');
31+
const PACKAGES_DIR = path.resolve(ROOT_DIR, 'packages');
3032

3133
const INTEGRATION_TEST_DIR = path.join(
3234
os.tmpdir() || os.homedir(),
@@ -107,11 +109,13 @@ export const setup = async (project: TestProject): Promise<void> => {
107109
).filter(e => e != null),
108110
);
109111

112+
const PNPM_CATALOG = await getPnpmCatalog();
113+
110114
const BASE_DEPENDENCIES: PackageJSON['devDependencies'] = {
111115
...tseslintPackages,
112-
eslint: rootPackageJson.devDependencies.eslint,
113-
typescript: rootPackageJson.devDependencies.typescript,
114-
vitest: rootPackageJson.devDependencies.vitest,
116+
eslint: PNPM_CATALOG.eslint,
117+
typescript: PNPM_CATALOG.typescript,
118+
vitest: PNPM_CATALOG.vitest,
115119
};
116120

117121
const temp = await fs.mkdtemp(path.join(INTEGRATION_TEST_DIR, 'temp'), {
@@ -222,3 +226,26 @@ export const teardown = async (): Promise<void> => {
222226
await fs.rm(INTEGRATION_TEST_DIR, { recursive: true });
223227
}
224228
};
229+
230+
interface PnpmWorkspace {
231+
catalog: Record<string, string>;
232+
}
233+
234+
async function getPnpmCatalog() {
235+
const pnpmWorkspace = await fs.readFile(
236+
path.join(ROOT_DIR, 'pnpm-workspace.yaml'),
237+
{ encoding: 'utf-8' },
238+
);
239+
240+
const parsed: PnpmWorkspace = yaml.parse(pnpmWorkspace);
241+
242+
const expectedPackages = ['eslint', 'typescript', 'vitest'];
243+
244+
for (const packageName of expectedPackages) {
245+
if (!(packageName in parsed.catalog)) {
246+
throw new Error(`Package ${packageName} not found in pnpm catalog`);
247+
}
248+
}
249+
250+
return parsed.catalog;
251+
}

packages/parser/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@
5858
"debug": "^4.4.3"
5959
},
6060
"devDependencies": {
61-
"@vitest/coverage-v8": "^4.0.18",
62-
"eslint": "*",
63-
"glob": "*",
64-
"rimraf": "*",
65-
"typescript": "*",
66-
"vitest": "^4.0.18"
61+
"@vitest/coverage-v8": "catalog:",
62+
"eslint": "catalog:",
63+
"glob": "catalog:",
64+
"rimraf": "catalog:",
65+
"typescript": "catalog:",
66+
"vitest": "catalog:"
6767
},
6868
"funding": {
6969
"type": "opencollective",

packages/project-service/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@
5454
"debug": "^4.4.3"
5555
},
5656
"devDependencies": {
57-
"@vitest/coverage-v8": "^4.0.18",
58-
"rimraf": "*",
59-
"typescript": "*",
60-
"vitest": "^4.0.18"
57+
"@vitest/coverage-v8": "catalog:",
58+
"rimraf": "catalog:",
59+
"typescript": "catalog:",
60+
"vitest": "catalog:"
6161
},
6262
"funding": {
6363
"type": "opencollective",

packages/rule-schema-to-typescript-types/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
"natural-compare": "^1.4.0"
3838
},
3939
"devDependencies": {
40-
"@vitest/coverage-v8": "^4.0.18",
41-
"eslint": "*",
42-
"rimraf": "*",
43-
"typescript": "*",
44-
"vitest": "^4.0.18"
40+
"@vitest/coverage-v8": "catalog:",
41+
"eslint": "catalog:",
42+
"rimraf": "catalog:",
43+
"typescript": "catalog:",
44+
"vitest": "catalog:"
4545
},
4646
"funding": {
4747
"type": "opencollective",

packages/rule-tester/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@
5858
"devDependencies": {
5959
"@types/json-stable-stringify-without-jsonify": "^1.0.2",
6060
"@types/lodash.merge": "4.6.9",
61-
"@vitest/coverage-v8": "^4.0.18",
62-
"eslint": "*",
63-
"rimraf": "*",
64-
"typescript": "*",
65-
"vitest": "^4.0.18"
61+
"@vitest/coverage-v8": "catalog:",
62+
"eslint": "catalog:",
63+
"rimraf": "catalog:",
64+
"typescript": "catalog:",
65+
"vitest": "catalog:"
6666
},
6767
"funding": {
6868
"type": "opencollective",

0 commit comments

Comments
 (0)