UNPKG

alinea

Version:
66 lines (64 loc) 1.97 kB
import "../../chunks/chunk-NZLE2WMY.js"; // src/cli/generate/CompileConfig.ts import fs from "node:fs"; import path from "node:path"; import { buildEmitter } from "../build/BuildEmitter.js"; import { buildOptions } from "../build/BuildOptions.js"; import { externalPlugin } from "../util/ExternalPlugin.js"; import { ignorePlugin } from "../util/IgnorePlugin.js"; import { publicDefines } from "../util/PublicDefines.js"; import { reportError, reportFatal } from "../util/Report.js"; import { loadCMS } from "./LoadConfig.js"; function buildConfig(ctx) { const { rootDir } = ctx; const tsConfigFile = path.join(rootDir, "tsconfig.json"); const define = publicDefines(process.env); return { ...buildOptions, color: true, format: "esm", target: "esnext", treeShaking: true, bundle: true, logOverride: { "ignored-bare-import": "silent" }, platform: "neutral", jsx: "automatic", define, plugins: [externalPlugin(rootDir), ignorePlugin], tsconfig: fs.existsSync(tsConfigFile) ? tsConfigFile : void 0 }; } async function* compileConfig(ctx) { const { outDir, configLocation, cmd } = ctx; const config = buildConfig(ctx); const location = path.relative(process.cwd(), configLocation).replace(/\\/g, "/"); const builds = buildEmitter({ ...config, outdir: outDir, entryPoints: { config: configLocation }, sourcemap: true }); const halt = (error) => { reportError(error); if (cmd === "dev") return; builds.return(); }; for await (const { type, result } of builds) { if (type !== "done") continue; if (result.errors.length) { reportFatal(`Could not compile Alinea config file @ ${location}`); continue; } try { yield await loadCMS(outDir); } catch (error) { const message = "message" in error ? error.message : error; halt(new Error(`${message} @ ${location}`, { cause: error })); } } } export { compileConfig };