@fal-works/esbuild-plugin-global-externals
Version:
esbuild plugin for replacing imports with global variables.
35 lines (28 loc) • 1 kB
text/typescript
import type { NormalizedModuleInfo } from "./module-info";
const createCjsContents = (variableName: string) =>
`module.exports = ${variableName};`;
const createEsmContents = (
variableName: string,
namedExports: readonly string[] | null,
defaultExport: boolean
) => {
const codeElements = defaultExport ? [`export default ${variableName};`] : [];
if (namedExports && namedExports.length) {
const exportNames = [...new Set(namedExports)].join(", ");
codeElements.push(`const { ${exportNames} } = ${variableName};`);
codeElements.push(`export { ${exportNames} };`);
}
return codeElements.join("\n");
};
/**
* Creates value for `OnLoadResult.contents`.
*/
export const createContents = (moduleInfo: NormalizedModuleInfo): string => {
const { type, varName, namedExports, defaultExport } = moduleInfo;
switch (type) {
case "esm":
return createEsmContents(varName, namedExports, defaultExport);
case "cjs":
return createCjsContents(varName);
}
};