Upgrade frontend toolchain to latest majors

Bump React 19.2, Relay 21, React Router 8, Vite 8 with
@vitejs/plugin-react 6, ESLint 10, GraphQL 17, TypeScript 6,
@types/node 24, and Tailwind 4.3 across the workspaces.

vite-plugin-react 6 (Vite 8) no longer runs Babel, so the Relay
tagged-template transform now runs through @rolldown/plugin-babel
in the console and trust Vite configs.

Relay 21 ships first-party types and enables the ambiguous-alias
check by default; disable that flag to preserve existing queries
and add explicit usePreloadedQuery type arguments where the new
types no longer infer the operation. TypeScript 6 deprecations and
stricter inference are addressed in tsconfigs and call sites.

Keep n8n-node on ESLint 9 and eslint-plugin-react on 7.37.5, the
newest releases compatible with their toolchains.

Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
Émile Ré
2026-06-18 19:10:00 +02:00
parent f1fc2dc0e0
commit f98b73f073
130 changed files with 2228 additions and 1763 deletions

View File

@@ -15,42 +15,45 @@
import { createRequire } from "node:module";
import { fileURLToPath, URL } from "node:url";
import babel from "@rolldown/plugin-babel";
import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite";
const require = createRequire(import.meta.url);
// @vitejs/plugin-react@6 (Vite 8) no longer runs Babel, so the Relay tagged
// template transform is applied via @rolldown/plugin-babel instead. The iam
// pages and the rest of the app compile against separate artifact directories.
const iamFiles = /src[/\\]pages[/\\]iam[/\\]/;
// https://vite.dev/config/
export default defineConfig({
plugins: [
react({
exclude: ["src/pages/iam/**/*"],
babel: {
plugins: [
[
"relay",
{
eagerEsModules: true,
artifactDirectory: "src/__generated__/core",
},
],
react(),
babel({
exclude: [/[/\\]node_modules[/\\]/, /\0rolldown[/\\]runtime\.js/, iamFiles],
plugins: [
[
"relay",
{
eagerEsModules: true,
artifactDirectory: "src/__generated__/core",
},
],
},
],
}),
react({
include: ["src/pages/iam/**/*"],
babel: {
plugins: [
[
"relay",
{
eagerEsModules: true,
artifactDirectory: "src/__generated__/iam",
},
],
babel({
include: /src[/\\]pages[/\\]iam[/\\].*\.[jt]sx?(?:$|\?)/,
plugins: [
[
"relay",
{
eagerEsModules: true,
artifactDirectory: "src/__generated__/iam",
},
],
},
],
}),
tailwindcss(),
],