Files
2026-09-08 20:28:54 +08:00

53 lines
1.3 KiB
JavaScript

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)
})
}