cli: switch out eslint and ts-checker plugins

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2025-08-09 15:20:58 +02:00
parent 923ceb2f34
commit e7376ca6b8
4 changed files with 177 additions and 19 deletions
+3 -1
View File
@@ -10,9 +10,11 @@
"@module-federation/enhanced": "^0.9.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
"esbuild-loader": "^4.0.0",
"eslint-webpack-plugin": "^4.2.0",
"fork-ts-checker-webpack-plugin": "^9.0.0",
"mini-css-extract-plugin": "^2.4.2",
"terser-webpack-plugin": "^5.1.3",
"webpack": "^5.94.0",
"webpack": "^5.96.0",
"webpack-dev-server": "^5.0.0"
}
}
+13 -3
View File
@@ -58,6 +58,7 @@
"@backstage/release-manifests": "workspace:^",
"@backstage/types": "workspace:^",
"@manypkg/get-packages": "^1.1.3",
"@module-federation/enhanced": "^0.9.0",
"@octokit/graphql": "^5.0.0",
"@octokit/graphql-schema": "^13.7.0",
"@octokit/oauth-app": "^4.2.0",
@@ -101,9 +102,8 @@
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-unused-imports": "^4.1.4",
"eslint-webpack-plugin": "^4.2.0",
"eslint-rspack-plugin": "^4.2.1",
"express": "^4.17.1",
"fork-ts-checker-webpack-plugin": "^9.0.0",
"fs-extra": "^11.2.0",
"git-url-parse": "^15.0.0",
"glob": "^7.1.7",
@@ -142,6 +142,7 @@
"sucrase": "^3.20.2",
"swc-loader": "^0.2.3",
"tar": "^6.1.12",
"ts-checker-rspack-plugin": "^1.1.5",
"ts-morph": "^24.0.0",
"undici": "^7.2.3",
"util": "^0.12.3",
@@ -169,7 +170,6 @@
"@backstage/plugin-scaffolder-node-test-utils": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@backstage/theme": "workspace:^",
"@module-federation/enhanced": "^0.9.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
"@types/cross-spawn": "^6.0.2",
"@types/ejs": "^3.1.3",
@@ -189,6 +189,8 @@
"@types/yarnpkg__lockfile": "^1.1.4",
"del": "^8.0.0",
"esbuild-loader": "^4.0.0",
"eslint-webpack-plugin": "^4.2.0",
"fork-ts-checker-webpack-plugin": "^9.0.0",
"mini-css-extract-plugin": "^2.4.2",
"msw": "^1.0.0",
"nodemon": "^3.0.1",
@@ -200,6 +202,8 @@
"@module-federation/enhanced": "^0.9.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
"esbuild-loader": "^4.0.0",
"eslint-webpack-plugin": "^4.2.0",
"fork-ts-checker-webpack-plugin": "^9.0.0",
"mini-css-extract-plugin": "^2.4.2",
"terser-webpack-plugin": "^5.1.3",
"webpack": "~5.96.0",
@@ -215,6 +219,12 @@
"esbuild-loader": {
"optional": true
},
"eslint-webpack-plugin": {
"optional": true
},
"fork-ts-checker-webpack-plugin": {
"optional": true
},
"mini-css-extract-plugin": {
"optional": true
},
@@ -20,8 +20,8 @@ import { rspack, Configuration } from '@rspack/core';
import { BundlingPaths } from './paths';
import { Config } from '@backstage/config';
import ESLintPlugin from 'eslint-webpack-plugin';
import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
import ESLintRspackPlugin from 'eslint-rspack-plugin';
import { TsCheckerRspackPlugin } from 'ts-checker-rspack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import ModuleScopePlugin from 'react-dev-utils/ModuleScopePlugin';
import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack';
@@ -156,11 +156,18 @@ export async function createConfig(
}
if (checksEnabled) {
const TsCheckerPlugin = webpack
? (require('fork-ts-checker-webpack-plugin') as typeof import('fork-ts-checker-webpack-plugin'))
: TsCheckerRspackPlugin;
const ESLintPlugin = webpack
? (require('eslint-webpack-plugin') as typeof import('eslint-webpack-plugin'))
: ESLintRspackPlugin;
plugins.push(
new ForkTsCheckerWebpackPlugin({
typescript: { configFile: paths.targetTsConfig, memoryLimit: 4096 },
new TsCheckerPlugin({
typescript: { configFile: paths.targetTsConfig, memoryLimit: 8192 },
}),
new ESLintPlugin({
cache: false, // Cache seems broken
context: paths.targetPath,
files: ['**/*.(ts|tsx|mts|cts|js|jsx|mjs|cjs)'],
}),
+150 -11
View File
@@ -1896,14 +1896,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.8.3":
version: 7.26.2
resolution: "@babel/code-frame@npm:7.26.2"
"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.8.3":
version: 7.27.1
resolution: "@babel/code-frame@npm:7.27.1"
dependencies:
"@babel/helper-validator-identifier": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.27.1"
js-tokens: "npm:^4.0.0"
picocolors: "npm:^1.0.0"
checksum: 10/db2c2122af79d31ca916755331bb4bac96feb2b334cdaca5097a6b467fdd41963b89b14b6836a14f083de7ff887fc78fa1b3c10b14e743d33e12dbfe5ee3d223
picocolors: "npm:^1.1.1"
checksum: 10/721b8a6e360a1fa0f1c9fe7351ae6c874828e119183688b533c477aa378f1010f37cc9afbfc4722c686d1f5cdd00da02eab4ba7278a0c504fa0d7a321dcd4fdf
languageName: node
linkType: hard
@@ -3029,6 +3029,7 @@ __metadata:
eslint-plugin-react: "npm:^7.37.2"
eslint-plugin-react-hooks: "npm:^5.0.0"
eslint-plugin-unused-imports: "npm:^4.1.4"
eslint-rspack-plugin: "npm:^4.2.1"
eslint-webpack-plugin: "npm:^4.2.0"
express: "npm:^4.17.1"
fork-ts-checker-webpack-plugin: "npm:^9.0.0"
@@ -3074,6 +3075,7 @@ __metadata:
swc-loader: "npm:^0.2.3"
tar: "npm:^6.1.12"
terser-webpack-plugin: "npm:^5.1.3"
ts-checker-rspack-plugin: "npm:^1.1.5"
ts-morph: "npm:^24.0.0"
undici: "npm:^7.2.3"
util: "npm:^0.12.3"
@@ -3089,6 +3091,8 @@ __metadata:
"@module-federation/enhanced": ^0.9.0
"@pmmmwh/react-refresh-webpack-plugin": ^0.5.7
esbuild-loader: ^4.0.0
eslint-webpack-plugin: ^4.2.0
fork-ts-checker-webpack-plugin: ^9.0.0
mini-css-extract-plugin: ^2.4.2
terser-webpack-plugin: ^5.1.3
webpack: ~5.96.0
@@ -3100,6 +3104,10 @@ __metadata:
optional: true
esbuild-loader:
optional: true
eslint-webpack-plugin:
optional: true
fork-ts-checker-webpack-plugin:
optional: true
mini-css-extract-plugin:
optional: true
terser-webpack-plugin:
@@ -10301,6 +10309,73 @@ __metadata:
languageName: node
linkType: hard
"@jsonjoy.com/base64@npm:^1.1.2":
version: 1.1.2
resolution: "@jsonjoy.com/base64@npm:1.1.2"
peerDependencies:
tslib: 2
checksum: 10/d76bb58eff841c090d9bf69a073611ffa73c40a664ccbcea689f65961f57d7b24051269d06b437e4f6204285d6ba92f50f587c5e95c5f9e4f10b36a2ed4cd0c8
languageName: node
linkType: hard
"@jsonjoy.com/buffers@npm:^1.0.0":
version: 1.0.0
resolution: "@jsonjoy.com/buffers@npm:1.0.0"
peerDependencies:
tslib: 2
checksum: 10/3347a16a555398c19265203877b8e325be5facc1d875c0e85db0cc20b53418302257ed5af15bf53b84ff8337bd024a10be25ff3a02ebc54ae8e643577ca29e63
languageName: node
linkType: hard
"@jsonjoy.com/codegen@npm:^1.0.0":
version: 1.0.0
resolution: "@jsonjoy.com/codegen@npm:1.0.0"
peerDependencies:
tslib: 2
checksum: 10/a0afb03d2af4fbc1377c547e507f5db99a25f515d8c4b6b2cef1ff28145ac59fff12b6e1f41f9734cb62ea5619e7f9be1acd0908305d6f4176898ee534ee9a64
languageName: node
linkType: hard
"@jsonjoy.com/json-pack@npm:^1.0.3":
version: 1.10.0
resolution: "@jsonjoy.com/json-pack@npm:1.10.0"
dependencies:
"@jsonjoy.com/base64": "npm:^1.1.2"
"@jsonjoy.com/buffers": "npm:^1.0.0"
"@jsonjoy.com/codegen": "npm:^1.0.0"
"@jsonjoy.com/json-pointer": "npm:^1.0.1"
"@jsonjoy.com/util": "npm:^1.9.0"
hyperdyperid: "npm:^1.2.0"
thingies: "npm:^2.5.0"
peerDependencies:
tslib: 2
checksum: 10/5ad1eb008cf5f681dbc1301f5a7c33ca3a101d22773dbd2a9db4b02e5847c2f8b0c5f074c69f4ced5c24b3dc1dd85ddbc1688f0002fee9416869c579c34c4a8e
languageName: node
linkType: hard
"@jsonjoy.com/json-pointer@npm:^1.0.1":
version: 1.0.1
resolution: "@jsonjoy.com/json-pointer@npm:1.0.1"
dependencies:
"@jsonjoy.com/util": "npm:^1.3.0"
peerDependencies:
tslib: 2
checksum: 10/ff15df95df38677a09fe2155cf4521844c9f0653c77a7090bb6e726d275fb78ab6c3543c4ebdc14aff07e44da08b1545631a63e42e217c18059194957e060ed9
languageName: node
linkType: hard
"@jsonjoy.com/util@npm:^1.3.0, @jsonjoy.com/util@npm:^1.9.0":
version: 1.9.0
resolution: "@jsonjoy.com/util@npm:1.9.0"
dependencies:
"@jsonjoy.com/buffers": "npm:^1.0.0"
"@jsonjoy.com/codegen": "npm:^1.0.0"
peerDependencies:
tslib: 2
checksum: 10/1a6e5301d725a7161b93ff707eb1a954bf4552a2fa96eee9a960d3ae3ed5f993d18b56dcff29e98036341a5968c5d1b2dfe21f76695390e7f0d89b81f24c85e0
languageName: node
linkType: hard
"@juggle/resize-observer@npm:^3.3.1":
version: 3.3.1
resolution: "@juggle/resize-observer@npm:3.3.1"
@@ -16870,7 +16945,7 @@ __metadata:
languageName: node
linkType: hard
"@rspack/lite-tapable@npm:1.0.1":
"@rspack/lite-tapable@npm:1.0.1, @rspack/lite-tapable@npm:^1.0.1":
version: 1.0.1
resolution: "@rspack/lite-tapable@npm:1.0.1"
checksum: 10/240b7832965bca5a52d1f03a8539dab5810958ce24b5a670405b2505d81350f10d668f4055648f5918bc18ac033e637bcb7f92189345f0f2f671b546019c2f9e
@@ -29850,6 +29925,21 @@ __metadata:
languageName: node
linkType: hard
"eslint-rspack-plugin@npm:^4.2.1":
version: 4.2.1
resolution: "eslint-rspack-plugin@npm:4.2.1"
dependencies:
"@types/eslint": "npm:^8.56.10"
jest-worker: "npm:^29.7.0"
micromatch: "npm:^4.0.8"
normalize-path: "npm:^3.0.0"
schema-utils: "npm:^4.2.0"
peerDependencies:
eslint: ^8.0.0 || ^9.0.0
checksum: 10/c45639e660d13af63c58f8f80103a033f607b9d635d9315d7d859408134cc35e2e3f981805f7abdd6061ec9d8207cfc7c0d5a097df9ac8c7ccd707ca5aa14583
languageName: node
linkType: hard
"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1":
version: 5.1.1
resolution: "eslint-scope@npm:5.1.1"
@@ -33249,6 +33339,13 @@ __metadata:
languageName: node
linkType: hard
"hyperdyperid@npm:^1.2.0":
version: 1.2.0
resolution: "hyperdyperid@npm:1.2.0"
checksum: 10/64abb5568ff17aa08ac0175ae55e46e22831c5552be98acdd1692081db0209f36fff58b31432017b4e1772c178962676a2cc3c54e4d5d7f020d7710cec7ad7a6
languageName: node
linkType: hard
"hyphenate-style-name@npm:^1.0.3":
version: 1.0.3
resolution: "hyphenate-style-name@npm:1.0.3"
@@ -37837,12 +37934,15 @@ __metadata:
languageName: node
linkType: hard
"memfs@npm:^4.6.0":
version: 4.7.7
resolution: "memfs@npm:4.7.7"
"memfs@npm:^4.28.0, memfs@npm:^4.6.0":
version: 4.36.0
resolution: "memfs@npm:4.36.0"
dependencies:
"@jsonjoy.com/json-pack": "npm:^1.0.3"
"@jsonjoy.com/util": "npm:^1.3.0"
tree-dump: "npm:^1.0.1"
tslib: "npm:^2.0.0"
checksum: 10/311633e5857c91f41021b43f00eda8d540fed2c2d9e02c780fe78de720cfb55d15ab2d5b5ce9f2576637589b82e84488f1b9ff503563e817ed65200ad24617fb
checksum: 10/4898187c3278bd127340ec3d6c51d1fa77faa50aad71a8a1e4b7c02abbccd8485dccc7f565291b386b0cc96e5ac06902e4645108fad44e458fe8c1dfee3caf42
languageName: node
linkType: hard
@@ -47369,6 +47469,15 @@ __metadata:
languageName: node
linkType: hard
"thingies@npm:^2.5.0":
version: 2.5.0
resolution: "thingies@npm:2.5.0"
peerDependencies:
tslib: ^2
checksum: 10/b8b028a474aab798ff12ad5a5648306059976d3e23870327ae4ef640012953314b1d7f208dd5a8e9ebaeee6dd1cdb05503bb829699ee8f36514c37f771f2f035
languageName: node
linkType: hard
"throttle-debounce@npm:^3.0.1":
version: 3.0.1
resolution: "throttle-debounce@npm:3.0.1"
@@ -47668,6 +47777,15 @@ __metadata:
languageName: node
linkType: hard
"tree-dump@npm:^1.0.1":
version: 1.0.3
resolution: "tree-dump@npm:1.0.3"
peerDependencies:
tslib: 2
checksum: 10/cf382e61cfb5e3ff8f03425b5bc1923e8f0e385b3a02f43d9d0a32d09da9984477e0f2a7698628662263d1d3f1af17e33486c77ff454978f0f9f07fb5d1fe9a2
languageName: node
linkType: hard
"tree-kill@npm:^1.2.2":
version: 1.2.2
resolution: "tree-kill@npm:1.2.2"
@@ -47764,6 +47882,27 @@ __metadata:
languageName: node
linkType: hard
"ts-checker-rspack-plugin@npm:^1.1.5":
version: 1.1.5
resolution: "ts-checker-rspack-plugin@npm:1.1.5"
dependencies:
"@babel/code-frame": "npm:^7.27.1"
"@rspack/lite-tapable": "npm:^1.0.1"
chokidar: "npm:^3.6.0"
is-glob: "npm:^4.0.3"
memfs: "npm:^4.28.0"
minimatch: "npm:^9.0.5"
picocolors: "npm:^1.1.1"
peerDependencies:
"@rspack/core": ^1.0.0
typescript: ">=3.8.0"
peerDependenciesMeta:
"@rspack/core":
optional: true
checksum: 10/d43f87a5860f3b8f528bf8f43c78c2d958a18fa484d791a204047fc5672134fd689665021ee25b07f9f9d8c807cd291978f58b789bf531b4704a9a4e3ad84735
languageName: node
linkType: hard
"ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0":
version: 2.2.0
resolution: "ts-dedent@npm:2.2.0"