对于一个日渐宏大的下 uni-app 我的项目,pages.json 文件会变得有大有难以保护,所有就思考怎么样将 pages.json 文件才分易保护的小文件。
起初在浏览他的源码时发现了这个
const pagesJsonJsFileName = 'pages.js'
function processPagesJson (pagesJson, loader = {addDependency: function () {}}) {const pagesJsonJsPath = path.resolve(process.env.UNI_INPUT_DIR, pagesJsonJsFileName)
if (fs.existsSync(pagesJsonJsPath)) {delete require.cache[pagesJsonJsPath]
const pagesJsonJsFn = require(pagesJsonJsPath)
if (typeof pagesJsonJsFn === 'function') {pagesJson = pagesJsonJsFn(pagesJson, loader)
if (!pagesJson) {console.error(`${pagesJsonJsFileName} ${uniI18n.__('cliShared.requireReturnJsonObject')}`)
}
} else {console.error(`${pagesJsonJsFileName} ${uniI18n.__('cliShared.requireExportFunction')}`)
}
}
// 将 subpackages 转换成 subPackages
if (pagesJson.subpackages && !pagesJson.subPackages) {
pagesJson.subPackages = pagesJson.subpackages
delete pagesJson.subpackages
}
let uniNVueEntryPagePath
if (pagesJson.pages && pagesJson.pages.length) { // 如果首页是 nvue
if (isNVuePage(pagesJson.pages[0])) {uniNVueEntryPagePath = pagesJson.pages[0].path
}
}
// pages
filterPages(pagesJson.pages)
// subPackages
if (Array.isArray(pagesJson.subPackages) && pagesJson.subPackages.length) {
pagesJson.subPackages.forEach(subPackage => {filterPages(subPackage.pages, subPackage.root)
})
}
if (uniNVuePages.length) { // 间接挂在 pagesJson 上
pagesJson.nvue = {pages: uniNVuePages.reverse()
}
if (uniNVueEntryPagePath) {pagesJson.nvue.entryPagePath = uniNVueEntryPagePath}
}
return pagesJson
}
于是就有上面这个工具
仓库地址
uni-module-pages