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)
 |