@fal-works/esbuild-plugin-global-externals
Version:
esbuild plugin for replacing imports with global variables.
49 lines (41 loc) • 1.27 kB
text/typescript
export type ModuleType = "esm" | "cjs";
/**
* Information that discribes a module to be imported.
*/
export type ModuleInfo = {
/**
* Global variable name with which the import statements of the module
* should be replaced.
*/
varName: string;
/**
* Type (either `"esm"` or `"cjs"`) that determines the internal behavior of
* this plugin. Defaults to `"esm"`.
*/
type?: ModuleType;
/**
* Names of variables that are exported from the module and may be imported
* from another module.
* No effect if `type` is `"cjs"`.
*/
namedExports?: readonly string[];
/**
* Set to `false` to prevent emitting code for default import/export
* (which you won't need to unless you are finicky).
* Defaults to `true`. No effect if `type` is `"cjs"`.
*/
defaultExport?: boolean;
};
export type NormalizedModuleInfo = {
varName: string;
type: ModuleType;
namedExports: readonly string[] | null;
defaultExport: boolean;
};
export const normalizeModuleInfo = (
value: string | ModuleInfo
): NormalizedModuleInfo => {
const { type = "esm", varName, namedExports = null, defaultExport = true } =
typeof value === "string" ? { varName: value } : value;
return { type, varName, namedExports, defaultExport };
};