You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.4 KiB
85 lines
2.4 KiB
const fs = require('fs')
|
|
|
|
const pagesStr = fs.readFileSync('./src/pages.json', 'utf-8');
|
|
const pagesJson = JSON.parse(pagesStr);
|
|
// Pages页面
|
|
const Pages = pagesJson.pages.map((i) => {
|
|
return {
|
|
type: 'Pages',
|
|
name: i.name,
|
|
path: `/${i.path}`,
|
|
title: i.style?.navigationBarTitleText
|
|
};
|
|
});
|
|
// 二级页面
|
|
const subPages = pagesJson.subPackages.flatMap((i) => {
|
|
return i.pages.map((x) => {
|
|
return {
|
|
type: 'subPage',
|
|
name: x.name,
|
|
path: `/${i.root}/${x.path}`,
|
|
title: x.style?.navigationBarTitleText
|
|
};
|
|
});
|
|
});
|
|
// 当前已有页面
|
|
// const pages = [...Pages, ...subPages];
|
|
// 当前已创建文件
|
|
const filesList = fs.readdirSync('./src/pages');
|
|
const filesSubList = fs.readdirSync('./src/subpackage/pages');
|
|
|
|
// 获取需要新增的页面 =>取差集
|
|
let newPages = Pages.filter((i) => !filesList.includes(i.name));
|
|
const newSubPages = subPages.filter((i) => !filesSubList.includes(i.name));
|
|
|
|
newPages = [...newPages, ...newSubPages]
|
|
|
|
// 添加新路由
|
|
function addPages(pages) {
|
|
for (const page of pages) {
|
|
// 待修改根据path 路径生成
|
|
const { name, title, type } = page;
|
|
let dirPath = ''
|
|
switch (type) {
|
|
case 'Pages':
|
|
// 主包
|
|
dirPath = `./src/pages/${name}`;
|
|
break;
|
|
case 'subPage':
|
|
// 分包
|
|
dirPath = `./src/subpackage/pages/${name}`;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
// if (name.toLowerCase().indexOf("list") != -1) {
|
|
// console.log(22222222);
|
|
|
|
// } else {
|
|
// console.log(33333333);
|
|
// }
|
|
|
|
// return
|
|
fs.mkdirSync(dirPath);
|
|
const filePath = `${dirPath}/${name}.vue`;
|
|
const createStream = fs.createWriteStream(filePath);
|
|
|
|
const template =
|
|
`<script setup lang="ts">
|
|
import HeaderXcx from '@/components/Header/HeaderXcx.vue'
|
|
</script>
|
|
<template>
|
|
<view class="">
|
|
<HeaderXcx :leftTxt="'标题'" :textColor="'#fff'" :goBack="false"></HeaderXcx>
|
|
${title}
|
|
</view>
|
|
</template>
|
|
<style lang="scss" scoped></style>`;
|
|
createStream.write(template);
|
|
createStream.end();
|
|
console.log('\x1B[34m', `pages ${name} created successfully.`);
|
|
}
|
|
console.log('\x1B[32m%s\x1B[39m', '\n All files are created successfully.\n');
|
|
}
|
|
|
|
addPages(newPages);
|