2023-04-25 15:37:56 +08:00
|
|
|
import path from "node:path";
|
|
|
|
|
|
2025-11-01 00:47:11 +08:00
|
|
|
const PLUGIN_NAMESPACE = "add-default-export";
|
2023-04-25 15:37:56 +08:00
|
|
|
export default function esbuildPluginAddDefaultExport() {
|
|
|
|
|
return {
|
|
|
|
|
name: "addDefaultExport",
|
|
|
|
|
setup(build) {
|
|
|
|
|
const { initialOptions } = build;
|
|
|
|
|
if (initialOptions.format !== "esm") {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-08 08:18:29 +08:00
|
|
|
build.onResolve({ filter: /./, namespace: "file" }, (module) => {
|
2023-04-25 15:37:56 +08:00
|
|
|
if (module.kind === "entry-point") {
|
2025-04-08 09:10:10 +08:00
|
|
|
const file = module.path;
|
|
|
|
|
const relativePath = path
|
|
|
|
|
.relative(module.resolveDir, file)
|
2023-04-25 15:37:56 +08:00
|
|
|
.replaceAll("\\", "/");
|
2025-04-08 09:10:10 +08:00
|
|
|
return {
|
|
|
|
|
path: relativePath,
|
|
|
|
|
namespace: PLUGIN_NAMESPACE,
|
|
|
|
|
pluginData: { file },
|
|
|
|
|
};
|
2023-04-25 15:37:56 +08:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2025-04-08 09:10:10 +08:00
|
|
|
build.onLoad({ filter: /./, namespace: PLUGIN_NAMESPACE }, (module) => {
|
|
|
|
|
const { file } = module.pluginData;
|
|
|
|
|
const source = JSON.stringify(`./${path.basename(file)}`);
|
2023-04-25 15:37:56 +08:00
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
contents: /* indent */ `
|
2025-04-08 09:10:10 +08:00
|
|
|
export * from ${source};
|
2025-11-01 00:47:11 +08:00
|
|
|
export * as default from ${source};
|
2023-04-25 15:37:56 +08:00
|
|
|
`,
|
2025-04-08 09:10:10 +08:00
|
|
|
resolveDir: path.dirname(file),
|
2023-04-25 15:37:56 +08:00
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|