marketingSaaS-front_ui/build.js

49 lines
1.6 KiB
JavaScript

import fs from 'fs'
import path from 'path'
import config from './custom.page.js'
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])
console.log('打包的模块和页面--->', pagesInclude)
return {
exclude: [...excludeModule, ...excludePages],
include: pagesInclude,
}
}
export default getPages