const fs = require('fs') const { parseTheme } = require('@dcloudio/uni-cli-shared/lib/theme') function generatePageCode (pages, pageOptions) { return pages.map(pagePath => { if (pageOptions[pagePath].nvue) { return '' } return `__definePage('${pagePath}',function(){return Vue.extend(require('${pagePath}.vue?mpType=page').default)})` }).join('\n') } function generateUniConfig (appJson, isAppView) { return isAppView ? `window.__uniConfig = ${JSON.stringify( { window: parseTheme(appJson.window), darkmode: appJson.darkmode } , null)};` : '' } function generatePolyfill () { return fs.readFileSync(require.resolve('@dcloudio/uni-cli-shared/lib/uni-polyfill.js'), { encoding: 'utf8' }) } module.exports = function definePages (appJson, isAppView) { return { name: 'define-pages.js', content: ` ${generatePolyfill()} ${generateUniConfig(appJson, isAppView)} if(uni.restoreGlobal){ uni.restoreGlobal(weex,plus,setTimeout,clearTimeout,setInterval,clearInterval) } ${generatePageCode(appJson.pages, appJson.page)} ` } }