diff --git a/compiler/main.js b/compiler/main.js index c2e4d00beaeaa4864517ae0c4826eb4904044b6c..6aee246360b15617644e46ef1608c200a2dcc36a 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -33,7 +33,8 @@ const logger = getLogger('ETS'); const staticPreviewPage = process.env.aceStaticPreview; const abilityConfig = { abilityType: process.env.abilityType || 'page', - abilityEntryFile: null + abilityEntryFile: null, + projectAbilityPath: null }; const projectConfig = {}; const resources = { @@ -54,7 +55,8 @@ function initProjectConfig(projectConfig) { function loadEntryObj(projectConfig) { initProjectConfig(projectConfig); - setEntryFile(projectConfig); + const hasAbilityPage = setAbilityFile(projectConfig); + setEntryFile(projectConfig, hasAbilityPage); if(staticPreviewPage) { projectConfig.entryObj['./' + staticPreviewPage] = projectConfig.projectPath + path.sep + @@ -128,15 +130,34 @@ function readPages(ability, pages, configJson) { } } -function setEntryFile(projectConfig) { +function setEntryFile(projectConfig, hasAbilityPage) { const entryFileName = abilityConfig.abilityType === 'page' ? 'app' : abilityConfig.abilityType; const extendFile = entryFileName === 'app' ? '.ets' : '.ts'; abilityConfig.abilityEntryFile = entryFileName + extendFile; const entryFilePath = path.join(projectConfig.projectPath, abilityConfig.abilityEntryFile); if (!fs.existsSync(entryFilePath)) { - throw Error(`\u001b[31m ERROR: missing ${entryFilePath}. \u001b[39m`).message; + if(!hasAbilityPage){ + throw Error(`\u001b[31m ERROR: missing ${entryFilePath}. \u001b[39m`).message; + } + } else { + projectConfig.entryObj[`./${entryFileName}`] = projectConfig.projectPath + `/${abilityConfig.abilityEntryFile}?entry`; + } +} + +function setAbilityFile(projectConfig) { + const index = projectConfig.projectPath.split(path.sep).join('/').lastIndexOf('\/'); + const lastPathName = projectConfig.projectPath.substring(index + 1, projectConfig.projectPath.length); + const projectAbilityPath = path.resolve(projectConfig.projectPath, `${lastPathName}.ts`); + abilityConfig.projectAbilityPath = path.basename(projectAbilityPath); + const AbilityStagePath = path.resolve(projectConfig.projectPath, `../AbilityStage.ts`); + if (fs.existsSync(projectAbilityPath)) { + projectConfig.entryObj[`./${lastPathName}`] = projectAbilityPath + '?entry'; + } + if (fs.existsSync(AbilityStagePath)) { + projectConfig.entryObj['../AbilityStage'] = AbilityStagePath + '?entry'; + return true; } - projectConfig.entryObj[`./${entryFileName}`] = projectConfig.projectPath + `/${abilityConfig.abilityEntryFile}?entry`; + return false; } function loadWorker(projectConfig) { diff --git a/compiler/src/result_process.ts b/compiler/src/result_process.ts index 6dcc8065754a0c32cad8470274c929c3855a7c2b..c703f692638af11bae82957cc540bce72fd96d83 100644 --- a/compiler/src/result_process.ts +++ b/compiler/src/result_process.ts @@ -59,7 +59,7 @@ module.exports = function resultProcess(source: string, map: any): void { } } const resourcePath: string = path.basename(this.resourcePath); - if (['app.ets', abilityConfig.abilityEntryFile].includes(resourcePath)) { + if (['app.ets', abilityConfig.abilityEntryFile, 'AbilityStage.ts', abilityConfig.projectAbilityPath].includes(resourcePath)) { source = source.replace(/exports\.default/, 'globalThis.exports.default'); }