const {
|
initI18nOptions
|
} = require('@dcloudio/uni-cli-shared/lib/i18n')
|
|
function parseRoutes (config) {
|
const __uniRoutes = []
|
/* eslint-disable no-mixed-operators */
|
const tabBarList = ((config.tabBar && config.tabBar.list) || []).map(
|
item => item.pagePath
|
)
|
|
Object.keys(config.page).forEach(function (pagePath) {
|
const isTabBar = tabBarList.indexOf(pagePath) !== -1
|
const isQuit = isTabBar || config.pages[0] === pagePath
|
const isNVue = !!config.page[pagePath].nvue
|
const route = {
|
path: '/' + pagePath,
|
meta: {},
|
window: config.page[pagePath].window || {}
|
}
|
if (isQuit) {
|
route.meta.isQuit = true
|
}
|
if (isNVue) {
|
route.meta.isNVue = true
|
}
|
if (isTabBar) {
|
route.meta.isTabBar = true
|
}
|
__uniRoutes.push(route)
|
})
|
|
return __uniRoutes
|
}
|
|
const GLOBALS = [
|
'global',
|
'window',
|
'document',
|
'frames',
|
'self',
|
'location',
|
'navigator',
|
'localStorage',
|
'history',
|
'Caches',
|
'screen',
|
'alert',
|
'confirm',
|
'prompt',
|
'fetch',
|
'XMLHttpRequest',
|
'WebSocket',
|
'webkit',
|
'print'
|
]
|
|
const globalStatement = GLOBALS.map(g => `${g}:void 0`).join(',')
|
|
module.exports = function definePages (appJson) {
|
const __uniRoutes = parseRoutes(appJson)
|
|
delete appJson.page
|
delete appJson.usingComponents
|
// 保留nvueCompiler
|
// delete appJson.nvueCompiler
|
// 保留renderer
|
// delete appJson.renderer
|
|
if (process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
|
appJson.automator = true
|
}
|
const i18nOptions = initI18nOptions(
|
process.env.UNI_PLATFORM,
|
process.env.UNI_INPUT_DIR,
|
false,
|
true
|
)
|
if (i18nOptions) {
|
appJson.locale = ''
|
appJson.fallbackLocale = i18nOptions.locale
|
appJson.locales = i18nOptions.locales
|
}
|
return {
|
name: 'app-config-service.js',
|
content: `
|
var isReady=false;var onReadyCallbacks=[];
|
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
var __uniConfig = ${JSON.stringify(appJson, null)};
|
var __uniRoutes = ${JSON.stringify(__uniRoutes)};
|
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,${globalStatement}}}}});
|
`
|
}
|
}
|