123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /**
- * @desc: gen script command,make a new page generated by one click.
- * @author: nicejade
- */
- const fs = require('fs')
- const path = require('path')
- const colors = require('colors')
- const newFolderName = process.argv[2]
- String.prototype.firstUpperCase = function() {
- return this.replace(/\b(\w)/g, $1 => {
- return $1.toLowerCase()
- })
- }
- const resolve = dir => {
- return path.join(__dirname, '../..', dir)
- }
- const successExecPrint = msg => {
- console.log(
- colors.green(`✓ `) +
- colors.cyan(`${msg} `) +
- colors.green('task has been successfully executed.')
- )
- }
- function createNewPage(newFolderPath) {
- const mReg = new RegExp('@PAGE_CLASS_NAME', 'g')
- const pageContent = fs.readFileSync(`${__dirname}/template.ux`, 'UTF-8')
- const rootClassName = newFolderName
- .firstUpperCase()
- .replace(/([A-Z])/g, '-$1')
- .toLowerCase()
- const newContent = pageContent.replace(mReg, rootClassName)
- fs.mkdirSync(newFolderPath, 0777)
- fs.writeFile(`${newFolderPath}/index.ux`, newContent, error => {
- if (error) throw `Something went wrong: ${error}`
- })
- successExecPrint('Create New Page')
- }
- function saveRouter2Manifest() {
- const manifestPath = resolve('/src/manifest.json')
- let manifestConf = fs.readFileSync(manifestPath, 'UTF-8')
- manifestConf = JSON.parse(manifestConf)
- const routerPages = manifestConf.router.pages
- routerPages[`pages/${newFolderName}`] = {
- component: 'index'
- }
- manifestConf = JSON.stringify(manifestConf, null, 2)
- fs.writeFile(manifestPath, manifestConf, error => {
- if (error) throw `Something went wrong[@saveRouter2Manifest]: ${error}`
- })
- successExecPrint('Save Router Into Manifest')
- }
- function main() {
- if (!newFolderName) {
- return console.warn(
- `⚠️ Please enter the name of the page you want to create.`.underline.red
- )
- }
- const folderNameReg = /^[A-Z][[A-Za-z0-9]+$/
- if (!folderNameReg.test(newFolderName)) {
- return console.warn(
- `⚠️ Please enter the standard Folder name. Eg: XyzAbcde.`.underline.red
- )
- }
- const newFolderPath = path.join(__dirname, `../../src/pages/${newFolderName}`)
- const isExist = fs.existsSync(newFolderPath)
- if (isExist) {
- return console.warn(
- `⚠️ ${newFolderName} already exists in the /src/pages/ directory.`
- .underline.red
- )
- }
- createNewPage(newFolderPath)
- saveRouter2Manifest()
- }
- main()
|