diff --git a/es6.js b/es6.js index 357bb92cc..40633a425 100644 --- a/es6.js +++ b/es6.js @@ -13,6 +13,10 @@ const ConflictImport = []; const CircularDependency = []; function objHaveFunction(obj) { + if (obj === null) { + return false; + } + return Object.keys(obj).some(key => { const value = obj[key]; if (typeof value === "object") { @@ -105,6 +109,7 @@ async function handleFile(srcName) { const sourceCode = fs.readFileSync(srcName).toString(); const result = /BI\.(.*?)\s=\sBI\.inherit\(/.exec(sourceCode); + if (!result) { // console.log(`已经es6过,替换 xtype => ${srcName}`); if (!/export class/.test(sourceCode)) { @@ -167,11 +172,13 @@ async function handleFile(srcName) { }); let circle = false; - // 处理循环依赖 + // 处理循环依赖,base: ["@/case", "@/base", "@/widget"] 等于 base 不能直接引数组内的包 const forbiddenCrossRules = { base: ["@/case", "@/base", "@/widget"], "case": ["@/case", "@/widget"], widget: ["@/widget"], + component: ["@/component"], + core: ["@/core", "@base", "@/widget", "@/case"], }; const forbiddenKeys = []; @@ -180,6 +187,7 @@ async function handleFile(srcName) { lodash.forEach(G, (depts, module) => { // 找出 rule const packages = Object.keys(forbiddenCrossRules); + let key = packages.filter( _package => srcName.indexOf(_package) >= 0, ); @@ -407,6 +415,10 @@ async function handleFile(srcName) { M += `${f}\n`; }); + if (!collection.xtype) { + delete G["@/core"].shortcut; + } + Object.keys(G).forEach(key => { let moduleKey = key; if (moduleKey === path.basename(srcName).replace(/.js$/g, "")) { @@ -429,9 +441,9 @@ async function handleFile(srcName) { const outputCode = ` ${I} -@shortcut() +${collection.xtype ? "@shortcut()" : ""} export class ${clzName} extends ${superName} { -\tstatic xtype = "${collection.xtype}" +${collection.xtype ? `static xtype = "${collection.xtype}"` : ""} ${A}