@kcinternals/heft-esbuild-plugin
Version:
heft-plugin for bundling with esbuild
57 lines • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const node_path_1 = require("node:path");
const node_fs_1 = require("node:fs");
const esbuild_1 = require("esbuild");
const shared_1 = require("./shared");
class EsbuildPlugin {
_accessor;
get accessor() {
return this._accessor;
}
apply(session, heftConfiguration, options) {
if (session.parameters.watch) {
throw new Error(shared_1.UNSUPPORTED_WATCH_MODE);
}
session.hooks.run.tapPromise(shared_1.PLUGIN_NAME, async () => {
session.logger.terminal.writeLine(`Using esbuild version ${esbuild_1.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 ((0, node_fs_1.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((0, node_path_1.join)(basePath, main));
}
const output = options?.output ?? "lib-bundle";
const outdir = (0, node_path_1.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 (0, esbuild_1.build)(buildOptions);
});
}
}
exports.default = EsbuildPlugin;
//# sourceMappingURL=EsbuildPlugin.js.map