esbuild-plugin-modify-entrypoints
Version:
esbuild plugin to modify entrypoint contents
45 lines (44 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.modifyEntrypointsPlugin = exports.PLUGIN_NAME = void 0;
const promises_1 = require("node:fs/promises");
exports.PLUGIN_NAME = 'modify-entrypoints';
const modifyEntrypointsPlugin = (...modifyFunctions) => ({
name: exports.PLUGIN_NAME,
async setup(build) {
const functions = modifyFunctions.flat();
build.onResolve({ filter: /.*/ }, ({ path, resolveDir, kind }) => {
if (kind === 'entry-point') {
return {
path,
namespace: exports.PLUGIN_NAME,
pluginData: {
resolveDir,
},
};
}
});
build.onLoad({ filter: /.*/, namespace: exports.PLUGIN_NAME }, async ({ path, pluginData }) => {
const contents = await (0, promises_1.readFile)(path, 'utf8');
return functions.reduce((results, fn) => {
const innerResults = fn({
contents: results.contents,
loader: results.loader,
path,
resolveDir: pluginData?.resolveDir,
options: build.initialOptions,
});
const loader = innerResults.loader ?? results.loader;
return {
...results,
...innerResults,
...(loader ? { loader } : {}),
resolveDir: pluginData?.resolveDir,
};
}, {
contents,
});
});
},
});
exports.modifyEntrypointsPlugin = modifyEntrypointsPlugin;