esbuild-plugin-clean
Version:
ESBuild plugin for cleaning up assets before building.
68 lines (65 loc) • 2.17 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/lib/esbuild-plugin-clean.ts
import chalk from "chalk";
import del from "del";
var clean = /* @__PURE__ */ __name((options = {}) => {
const { patterns = [], cleanOnStartPatterns = [], cleanOnEndPatterns = [], dryRun = false, options: delOptions = {}, sync = true, cleanOn = "start", verbose: _verbose = false } = options;
const verbose = dryRun || _verbose;
const logCleanFiles = /* @__PURE__ */ __name((type, cleanFiles) => {
if (!verbose) {
return;
}
if (dryRun) {
console.log(chalk.blue("i"), `Clean plugin invoked in dryRun mode`);
}
if (cleanFiles.length) {
console.log(chalk.blue("i"), `${type} File Cleaned:
${cleanFiles.join("\n")}`);
}
}, "logCleanFiles");
const handler = sync ? (type, patterns2) => {
const cleanFiles = del.sync(patterns2, {
dryRun,
...delOptions
});
logCleanFiles(type, cleanFiles);
} : (type, patterns2) => {
del(patterns2, {
dryRun,
...delOptions
}).then((cleanFiles) => {
logCleanFiles(type, cleanFiles);
});
};
return {
name: "plugin:clean",
setup({ onStart: registerOnStartCallback, onEnd: registerOnEndCallback }) {
if (!patterns.length && !cleanOnStartPatterns.length && !cleanOnEndPatterns.length) {
return;
}
if (cleanOn === "start" || cleanOn === "both") {
registerOnStartCallback(() => {
patterns.length && handler("NormalPatterns", patterns);
});
}
if (cleanOn === "end" || cleanOn === "both") {
registerOnEndCallback(() => {
patterns.length && handler("NormalPatterns", patterns);
});
}
registerOnStartCallback(() => {
cleanOnStartPatterns.length && handler("CleanOnStartPatterns", cleanOnStartPatterns);
});
registerOnEndCallback(() => {
cleanOnEndPatterns.length && handler("CleanOnEndPatterns", cleanOnEndPatterns);
});
}
};
}, "clean");
// src/index.ts
var src_default = clean;
export {
clean,
src_default as default
};