85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
|  | 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) |