reactCompiler

tcmts.cli.web.reactCompiler · #ce77taql · term · runs on the server

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

used by