103 lines
2.2 KiB
JavaScript
103 lines
2.2 KiB
JavaScript
/**
|
|
* libs to import as global var
|
|
* name: module name
|
|
* mergeDefaultAndNameExports: whether to merge default and named exports
|
|
*/
|
|
export const libs = [
|
|
"axios",
|
|
"redux",
|
|
"react-router",
|
|
"react-router-dom",
|
|
"react-redux",
|
|
"react",
|
|
"react-dom",
|
|
"lodash",
|
|
"history",
|
|
"antd",
|
|
"@dnd-kit/core",
|
|
"@dnd-kit/modifiers",
|
|
"@dnd-kit/sortable",
|
|
"@dnd-kit/utilities",
|
|
{
|
|
name: "moment",
|
|
extractDefault: true,
|
|
},
|
|
{
|
|
name: "dayjs",
|
|
extractDefault: true,
|
|
},
|
|
{
|
|
name: "lowcoder-sdk",
|
|
from: "./src/index.sdk.ts",
|
|
},
|
|
{
|
|
name: "styled-components",
|
|
mergeDefaultAndNameExports: true,
|
|
},
|
|
];
|
|
|
|
/**
|
|
* get global var name from module name
|
|
* @param {string} name
|
|
* @returns
|
|
*/
|
|
export const getLibGlobalVarName = (name) => {
|
|
return "$" + name.replace(/@/g, "$").replace(/[\/\-]/g, "_");
|
|
};
|
|
|
|
export const getLibNames = () => {
|
|
return libs.map((i) => {
|
|
if (typeof i === "object") {
|
|
return i.name;
|
|
}
|
|
return i;
|
|
});
|
|
};
|
|
|
|
export const getAllLibGlobalVarNames = () => {
|
|
const ret = {};
|
|
libs.forEach((lib) => {
|
|
let name = lib;
|
|
if (typeof lib === "object") {
|
|
name = lib.name;
|
|
}
|
|
ret[name] = getLibGlobalVarName(name);
|
|
});
|
|
return ret;
|
|
};
|
|
|
|
export const libsImportCode = (exclude = []) => {
|
|
const importLines = [];
|
|
const assignLines = [];
|
|
libs.forEach((i) => {
|
|
let name = i;
|
|
let merge = false;
|
|
let from = name;
|
|
let extractDefault = false;
|
|
|
|
if (typeof i === "object") {
|
|
name = i.name;
|
|
merge = i.mergeDefaultAndNameExports ?? false;
|
|
from = i.from ?? name;
|
|
extractDefault = i.extractDefault ?? false;
|
|
}
|
|
|
|
if (exclude.includes(name)) {
|
|
return;
|
|
}
|
|
|
|
const varName = getLibGlobalVarName(name);
|
|
if (merge) {
|
|
importLines.push(`import * as ${varName}_named_exports from '${from}';`);
|
|
importLines.push(`import ${varName} from '${from}';`);
|
|
assignLines.push(`Object.assign(${varName}, ${varName}_named_exports);`);
|
|
} else if (extractDefault) {
|
|
importLines.push(`import ${varName} from '${from}';`);
|
|
} else {
|
|
importLines.push(`import * as ${varName} from '${from}';`);
|
|
}
|
|
assignLines.push(`window.${varName} = ${varName};`);
|
|
});
|
|
return importLines.concat(assignLines).join("\n");
|
|
};
|