reactCompiler
uses node:module
React Compiler for compileReact, installed the first time it's needed. It's asked for before a bundler starts
(tcmPlugin's config), and before Vitest does (vitestChild): installing changes the cache's packages, which a dev server already running would see as
new dependencies, and load the page again.
import type { Codebase } from "#codebase/tcmts/cli/codebase"; import { provideTool } from "#codebase/tcmts/cli/lint"; import { reactCompilers } from "#codebase/tcmts/cli/web"; import type { ReactCompile } from "#codebase/tcmts/cli/web"; import { createRequire } from "node:module"; import path from "node:path"; export function reactCompiler(cb: Codebase): { version: string; transformSync: ReactCompile } { let compiler = reactCompilers.get(cb.lay.cacheDir); if (!compiler) { const tool = provideTool(cb, "oxc-transform-react"); const mod = createRequire(path.join(tool.dir, "package.json"))(tool.dir) as { transformSync: ReactCompile; }; compiler = { version: tool.version, transformSync: mod.transformSync }; reactCompilers.set(cb.lay.cacheDir, compiler); } return compiler; }
uses
- tcmts.cli.codebase.Codebase
- tcmts.cli.lint.provideTool
- tcmts.cli.web.ReactCompile
- tcmts.cli.web.reactCompilers