UNPKG

alinea

Version:

[![npm](https://img.shields.io/npm/v/alinea.svg)](https://npmjs.org/package/alinea) [![install size](https://packagephobia.com/badge?p=alinea)](https://packagephobia.com/result?p=alinea)

80 lines (78 loc) 2.06 kB
import "../../chunks/chunk-U5RRZUYZ.js"; // src/cli/generate/CompileConfig.ts import esbuild from "esbuild"; import fs from "node:fs"; import path from "node:path"; import { createEmitter } from "../util/Emitter.js"; import { externalPlugin } from "../util/ExternalPlugin.js"; import { ignorePlugin } from "../util/IgnorePlugin.js"; import { publicDefines } from "../util/PublicDefines.js"; function overrideTsConfig(cwd) { const overrideLocation = path.join(cwd, "tsconfig.alinea.json"); if (fs.existsSync(overrideLocation)) return overrideLocation; const tsConfig = path.join(cwd, "tsconfig.json"); const hasTsConfig = fs.existsSync(tsConfig); if (hasTsConfig) { const extendedConfig = { extends: "./tsconfig.json", compilerOptions: { jsx: "react-jsx" } }; fs.writeFileSync(overrideLocation, JSON.stringify(extendedConfig, null, 2)); return overrideLocation; } } function compileConfig({ rootDir, outDir, configLocation, watch }) { const tsConfigFile = overrideTsConfig(rootDir); const define = publicDefines(process.env); const results = createEmitter(); const config = { color: true, format: "esm", target: "esnext", treeShaking: true, outdir: outDir, entryPoints: { config: configLocation }, bundle: true, logOverride: { "ignored-bare-import": "silent" }, platform: "node", jsx: "automatic", define, plugins: [ externalPlugin(rootDir), ignorePlugin, { name: "emit", setup(build) { build.onEnd((res) => { if (res.errors.length) { console.log("> Could not compile Alinea config"); } else { results.emit(res); if (!watch) results.return(); } }); } } ], tsconfig: tsConfigFile }; if (watch) { esbuild.context(config).then((context) => context.watch()); } else { esbuild.build(config).catch(() => { }); } return results; } export { compileConfig };