alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
80 lines (78 loc) • 2.06 kB
JavaScript
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
};