@kcinternals/heft-esbuild-plugin
Version:
heft-plugin for bundling with esbuild
55 lines • 2.19 kB
JavaScript
import { join } from "node:path";
import { existsSync } from "node:fs";
import { build, version } from "esbuild";
import { PLUGIN_NAME, UNSUPPORTED_WATCH_MODE } from "./shared";
class EsbuildPlugin {
_accessor;
get accessor() {
return this._accessor;
}
apply(session, heftConfiguration, options) {
if (session.parameters.watch) {
throw new Error(UNSUPPORTED_WATCH_MODE);
}
session.hooks.run.tapPromise(PLUGIN_NAME, async () => {
session.logger.terminal.writeLine(`Using esbuild version ${version}`);
const basePath = heftConfiguration.buildFolderPath;
const entries = [];
const length = options?.entrypoints?.length ?? 0;
if (length > 0) {
entries.push(...options
.entrypoints.map(p => {
const output = p.replace("<pwd>", basePath);
if (existsSync(output))
return output;
session.logger.terminal.writeWarningLine(`Remove '${p}' entrypoint from list because file is missing`);
return "";
})
.filter(p => p !== ""));
}
else {
const main = heftConfiguration.projectPackageJson.main ??
options?.entrypoint ??
"";
entries.push(join(basePath, main));
}
const output = options?.output ?? "lib-bundle";
const outdir = join(basePath, output);
const buildOptions = {
entryPoints: entries,
outdir: outdir,
bundle: options?.bundle ?? true,
minify: options?.minify ?? true,
sourcemap: options?.sourcemap ?? false,
external: options?.external,
};
if (options?.platform)
buildOptions.platform = options.platform;
if (options?.target)
buildOptions.target = options.target;
await build(buildOptions);
});
}
}
export default EsbuildPlugin;
//# sourceMappingURL=EsbuildPlugin.js.map