yzxy-h5/custom.page.js

47 lines
1.5 KiB
JavaScript

import fs from 'fs'
import path from 'path'
const config = {
pages:'./src/pages',
pagesInclude:[]
}
const { pages, pagesInclude } = config
const getPages = () => {
const srcPath = path.resolve(__dirname, pages)
//所有的模块
const allModule = fs.readdirSync(srcPath);
//指定的完整模块
const completeModule = pagesInclude.filter(item => item.indexOf('.vue') === -1)
//需要排除的整个模块
const excludeModule = allModule.filter(item => !completeModule.includes(item))
//指定特定页面的模块
const targetpageModule = pagesInclude.filter(item => item.indexOf('.vue') >= 0)
const targetModule = targetpageModule.reduce((acc,cur) => {
const [dir,file] = cur.split('/');
if(Array.isArray(acc[dir])){
acc[dir].push(file)
}else{
acc[dir] = [file]
}
return acc
},{})
//需要排除的特定的页面
const excludePages = [];
Object.keys(targetModule).forEach((ele,index) => {
if(excludeModule.includes(ele)){
excludeModule.splice(excludeModule.indexOf(ele),1)
}
const targetPages = fs.readdirSync(path.resolve(__dirname,pages,ele)).filter(element => element.indexOf('.vue') >= 0)
const targetExclude = targetPages.filter(elem => !targetModule[ele].includes(elem)).map(current => `${ele}/${current}`)
excludePages.push(...targetExclude)
})
console.log('排除的模块以及页面',[...excludeModule,...excludePages]);
return {
exclude:[...excludeModule,...excludePages],
}
}
export default getPages