diff --git a/packages/webpack-uni-pages-loader/lib/platforms/h5.js b/packages/webpack-uni-pages-loader/lib/platforms/h5.js index 49e884986d68b3e2392b29b4a9ff2031681482af..b42548ae7c65eec0fdca416661514274da981893 100644 --- a/packages/webpack-uni-pages-loader/lib/platforms/h5.js +++ b/packages/webpack-uni-pages-loader/lib/platforms/h5.js @@ -327,6 +327,34 @@ meta:{ ] } +function filterPages (pagesJson, includes) { + const pages = [] + let subPackages = pagesJson.subPackages || [] + if (!Array.isArray(subPackages)) { + subPackages = [] + } + includes.forEach(includePagePath => { + let page = pagesJson.pages.find(page => page.path === includePagePath) + if (!page) { + for (let i = 0; i < subPackages.length; i++) { + const { + root, + pages: subPages + } = subPackages[i] + page = subPages.find(subPage => normalizePath(path.join(root, subPage.path)) === includePagePath) + if (page) { + break + } + } + } + if (!page) { + console.error(`${includePagePath} is not found`) + } + pages.push(page) + }) + pagesJson.pages = pages +} + module.exports = function (pagesJson, manifestJson, loader) { const inputDir = process.env.UNI_INPUT_DIR @@ -334,6 +362,17 @@ module.exports = function (pagesJson, manifestJson, loader) { configurePages(pagesJson, manifestJson, loader) }) + const loaderUtils = require('loader-utils') + const params = loaderUtils.parseQuery(loader.resourceQuery) + if (params.pages) { + try { + const pages = JSON.parse(params.pages) + if (Array.isArray(pages)) { + filterPages(pagesJson, pages) + } + } catch (e) {} + } + const pageComponents = getPageComponents(inputDir, pagesJson) pagesJson.globalStyle = process.UNI_H5_PAGES_JSON.globalStyle