const path = require('path')
|
|
const isWin = /^win/.test(process.platform)
|
const normalizePath = path => (isWin ? path.replace(/\\/g, '/') : path)
|
|
const removePlatformStyle = function (style) {
|
const PLATFORMS = global.uniPlugin.platforms || []
|
Object.keys(style).forEach(name => {
|
if (PLATFORMS.includes(name)) {
|
delete style[name]
|
}
|
})
|
return style
|
}
|
|
function parseWindow (style = {}) {
|
const windowJson = Object.create(null)
|
Object.assign(windowJson, style, style['mp-360'] || {})
|
return removePlatformStyle(windowJson)
|
}
|
|
function parsePage (page) {
|
return {
|
route: page.path,
|
window: parseWindow(page.style)
|
}
|
}
|
|
module.exports = function parseAppJson (pagesJson, manifestJson) {
|
const pages = []
|
pagesJson.pages.forEach(page => {
|
pages.push(parsePage(page))
|
})
|
const subPackages = pagesJson.subPackages
|
if (Array.isArray(subPackages)) {
|
subPackages.forEach(subPackage => {
|
const root = subPackage.root
|
subPackage.pages.forEach(page => {
|
pages.push(parsePage({
|
path: normalizePath(path.join(root, page.path)),
|
style: page.style
|
}))
|
})
|
})
|
}
|
return Object.assign({
|
sdkversion: '1.0.0'
|
}, manifestJson['mp-360'] || {}, {
|
pages,
|
window: parseWindow(pagesJson.globalStyle)
|
})
|
}
|