diff --git a/ace-loader/main.product.js b/ace-loader/main.product.js index 86caa53cdf7d4609018974d77a15789eb35478e3..12ec990086f5f970b8f674be1921931466052810 100644 --- a/ace-loader/main.product.js +++ b/ace-loader/main.product.js @@ -46,16 +46,26 @@ function readManifest(manifestFilePath) { return manifest; } -function loadEntryObj(manifest, projectPath, device_level) { +function loadEntryObj(projectPath, device_level, abilityType, manifestFilePath) { let entryObj = {} - const appJSPath = path.resolve(projectPath, 'app.js'); - if (device_level === 'card') { - entryObj = addPageEntryObj(manifest, projectPath); - } else { - if (!fs.existsSync(appJSPath)) { - throw Error(red + 'ERROR: missing app.js' + reset).message; - } - entryObj['./app'] = projectPath + '/app.js?entry'; + switch (abilityType) { + case 'page': + const appJSPath = path.resolve(projectPath, 'app.js'); + if (device_level === 'card') { + entryObj = addPageEntryObj(readManifest(manifestFilePath), projectPath); + } else { + if (!fs.existsSync(appJSPath)) { + throw Error(red + 'ERROR: missing app.js' + reset).message; + } + entryObj['./app'] = projectPath + '/app.js?entry'; + } + break; + case 'data': + entryObj['./data'] = projectPath + '/data.js?entry'; + break + case 'service': + entryObj['./service'] = projectPath + '/service.js?entry'; + break } return entryObj; } diff --git a/ace-loader/sample/DataAbility/data.js b/ace-loader/sample/DataAbility/data.js new file mode 100644 index 0000000000000000000000000000000000000000..439e396a55ba789e75f2a12d26f77cab56eaa1bb --- /dev/null +++ b/ace-loader/sample/DataAbility/data.js @@ -0,0 +1,5 @@ +export default { + onInitialize(abilityInfo) { + console.info('DataAbility onInitialize'); + } +}; \ No newline at end of file diff --git a/ace-loader/sample/ServiceAbility/service.js b/ace-loader/sample/ServiceAbility/service.js new file mode 100644 index 0000000000000000000000000000000000000000..60cb1c3ca71b14bd8b52e4d324482226705f594e --- /dev/null +++ b/ace-loader/sample/ServiceAbility/service.js @@ -0,0 +1,24 @@ +export default { + onStart(want) { + console.info('ServiceAbility onStart'); + }, + onStop() { + console.info('ServiceAbility onStop'); + }, + onConnect(want) { + console.info('ServiceAbility onConnect'); + }, + onReconnect(want) { + console.info('ServiceAbility onReconnect'); + }, + onDisconnect() { + console.info('ServiceAbility onDisconnect'); + }, + onCommand(want, restart, startId) { + console.info('ServiceAbility onCommand'); + }, + onRemoteRequest(code, data, reply) { + console.info('ServiceAbility onRemoteRequest'); + return true; + } +}; \ No newline at end of file diff --git a/ace-loader/src/resource-plugin.js b/ace-loader/src/resource-plugin.js index 670860f4e75b0cf3f7e899ece21b1b62fbc11ce9..81398e1ae73cbc8eb73032e875860e301210d02d 100644 --- a/ace-loader/src/resource-plugin.js +++ b/ace-loader/src/resource-plugin.js @@ -142,32 +142,34 @@ let entryObj = {}; function addPageEntryObj() { entryObj = {}; - if (!fs.existsSync(manifestFilePath)) { - throw Error('ERROR: missing manifest').message; - } - const jsonString = fs.readFileSync(manifestFilePath).toString(); - const obj = JSON.parse(jsonString); - const pages = obj.pages; - if (pages === undefined) { - throw Error('ERROR: missing pages').message; - } - pages.forEach((element) => { - const sourcePath = element; - const hmlPath = path.join(input, sourcePath + '.hml') - const aceSuperVisualPath = process.env.aceSuperVisualPath || '' - const visualPath = path.join(aceSuperVisualPath, sourcePath + '.visual') - const isHml = fs.existsSync(hmlPath) - const isVisual = fs.existsSync(visualPath) - if (isHml && isVisual) { - logWarn(this, [{ - reason: 'ERROR: ' + sourcePath + ' cannot both have hml && visual' - }]) - } else if (isHml) { - entryObj['./' + element] = hmlPath + '?entry'; - } else if (isVisual){ - entryObj['./' + element] = visualPath + '?entry'; + if (process.env.abilityType === 'page') { + if (!fs.existsSync(manifestFilePath)) { + throw Error('ERROR: missing manifest').message; } - }); + const jsonString = fs.readFileSync(manifestFilePath).toString(); + const obj = JSON.parse(jsonString); + const pages = obj.pages; + if (pages === undefined) { + throw Error('ERROR: missing pages').message; + } + pages.forEach((element) => { + const sourcePath = element; + const hmlPath = path.join(input, sourcePath + '.hml') + const aceSuperVisualPath = process.env.aceSuperVisualPath || '' + const visualPath = path.join(aceSuperVisualPath, sourcePath + '.visual') + const isHml = fs.existsSync(hmlPath) + const isVisual = fs.existsSync(visualPath) + if (isHml && isVisual) { + logWarn(this, [{ + reason: 'ERROR: ' + sourcePath + ' cannot both have hml && visual' + }]) + } else if (isHml) { + entryObj['./' + element] = hmlPath + '?entry'; + } else if (isVisual){ + entryObj['./' + element] = visualPath + '?entry'; + } + }); + } if (process.env.isPreview !== 'true' && process.env.DEVICE_LEVEL === 'rich') { loadWorker(entryObj); } diff --git a/ace-loader/webpack.lite.config.js b/ace-loader/webpack.lite.config.js index 2f903b7b68e72d68dcb694f341a54cda0dba5748..5247259fdae0851b82f66ab6fa4853525bcd62ae 100644 --- a/ace-loader/webpack.lite.config.js +++ b/ace-loader/webpack.lite.config.js @@ -122,6 +122,7 @@ function setConfigs(env) { process.env.projectPath = env.aceModuleRoot || process.env.aceModuleRoot || process.cwd(); process.env.buildPath = env.aceModuleBuild || process.env.aceModuleBuild || path.resolve(process.env.projectPath, 'build'); process.env.aceManifestPath = process.env.aceManifestPath || path.resolve(process.env.projectPath, 'manifest.json'); + process.env.abilityType = 'page'; const manifest = readManifest(process.env.aceManifestPath) process.env.PLATFORM_VERSION = PLATFORM.VERSION6; const version = parseInt(manifest.minPlatformVersion); @@ -136,7 +137,7 @@ function setConfigs(env) { module.exports = (env) => { setConfigs(env) deleteFolderRecursive(process.env.buildPath); - webpackConfig.entry = loadEntryObj(readManifest(process.env.aceManifestPath), process.env.projectPath, process.env.DEVICE_LEVEL) + webpackConfig.entry = loadEntryObj(process.env.projectPath, process.env.DEVICE_LEVEL, process.env.abilityType, process.env.aceManifestPath) webpackConfig.output.path = path.resolve(__dirname, process.env.buildPath) webpackConfig.plugins = [ new ResourcePlugin(process.env.projectPath, process.env.buildPath, process.env.aceManifestPath), diff --git a/ace-loader/webpack.rich.config.js b/ace-loader/webpack.rich.config.js index b0e75f338efab5269345abad8f57e99a056c6672..7230f1b8fba45e37e43e60c99ea2502bb507e966 100644 --- a/ace-loader/webpack.rich.config.js +++ b/ace-loader/webpack.rich.config.js @@ -39,7 +39,7 @@ const richModule = { }] }, { - test: /(\.hml|app\.js)(\?[^?]+)?$/, + test: /(\.hml|app\.js|data\.js|service\.js)(\?[^?]+)?$/, use: [{ loader: path.resolve(__dirname, './index.js') }] @@ -156,15 +156,19 @@ function setConfigs(env) { process.env.projectPath = env.aceModuleRoot || process.env.aceModuleRoot || process.cwd(); process.env.buildPath = env.aceModuleBuild || process.env.aceModuleBuild || path.resolve(process.env.projectPath, 'build'); process.env.aceManifestPath = process.env.aceManifestPath || path.resolve(process.env.projectPath, 'manifest.json'); - const manifest = readManifest(process.env.aceManifestPath) - process.env.DEVICE_LEVEL = manifest.type === 'form' ? 'card' : 'rich' - process.env.PLATFORM_VERSION = PLATFORM.VERSION6; - const version = parseInt(manifest.minPlatformVersion); - if (version == 5) { - process.env.PLATFORM_VERSION = PLATFORM.VERSION5; - } - if (version <= 4) { - process.env.PLATFORM_VERSION = PLATFORM.VERSION3; + process.env.abilityType = process.env.abilityType || 'page' + process.env.DEVICE_LEVEL = process.env.DEVICE_LEVEL || 'rich' + if (process.env.abilityType === 'page') { + const manifest = readManifest(process.env.aceManifestPath) + process.env.DEVICE_LEVEL = manifest.type === 'form' ? 'card' : 'rich' + process.env.PLATFORM_VERSION = PLATFORM.VERSION6; + const version = parseInt(manifest.minPlatformVersion); + if (version == 5) { + process.env.PLATFORM_VERSION = PLATFORM.VERSION5; + } + if (version <= 4) { + process.env.PLATFORM_VERSION = PLATFORM.VERSION3; + } } } @@ -172,7 +176,7 @@ function setConfigs(env) { module.exports = (env) => { setConfigs(env) deleteFolderRecursive(process.env.buildPath); - config.entry = loadEntryObj(readManifest(process.env.aceManifestPath), process.env.projectPath, process.env.DEVICE_LEVEL) + config.entry = loadEntryObj(process.env.projectPath, process.env.DEVICE_LEVEL, process.env.abilityType, process.env.aceManifestPath) config.output.path = path.resolve(__dirname, process.env.buildPath) config.plugins = [ new ResourcePlugin(process.env.projectPath, process.env.buildPath, process.env.aceManifestPath),