UNPKG

@kcinternals/heft-esbuild-plugin

Version:
55 lines 2.19 kB
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