代码拉取完成,页面将自动刷新
const {
useInquirerList,
useInquirerConfirm,
useInquirerQuestion
} = require('@markthree/ilazy')
const {
templatePaths,
baseDestPaths
} = require('./shared/paths')
const {
writeJson,
createPath,
createFile,
readFileSync,
pathExistsSync,
templateCompile
} = require('@markthree/node-shared')
const {
noticeFail,
noticeSuccess
} = require('./shared/log')
const { getModulesName } = require('./shared/modules')
const pagesJson = require('../pages.json')
const p = createPath(__dirname)
const autoCreate = async () => {
const type = await useInquirerList(
'请问您需要新建以下什么类型的模块?',
{
default: 'api',
choices: ['api', 'page']
}
)
const n = getModulesName(type)
const sort = await useInquirerList(
`请问该${n}属于以下哪个分类?`,
{
default: 'utilities',
choices: [
'utilities',
'watch',
'misc',
'media',
'animation',
'component'
]
}
)
const name = await useInquirerQuestion(
`请您输入${n}的名称`
)
const isPage = type === 'page'
if (isPage) {
return createPage({ name, sort })
}
const isApi = type === 'api'
if (isApi) {
const desc = await useInquirerQuestion('请输入描述')
return createApi({ name, sort, desc })
}
}
autoCreate()
// 创建页面
const createPage = async (options = {}) => {
const { name, sort } = options
const baseDestPath = baseDestPaths['page']
const dp = createPath(baseDestPath)
const src = templatePaths['page']
const dest = dp(`./${sort}/${name}/${name}.vue`)
const shouldCreate = await isWillCreate(dest, '页面')
if (shouldCreate) {
pagesJson.pages.push({
path: `pages/${sort}/${name}/${name}`
})
await gen(src, dest, { name, sort })
await writeJson(p('../pages.json'), pagesJson, {
spaces: '\t'
})
return noticeSuccess()
}
noticeFail()
}
// 创建api
const createApi = async (options = {}) => {
const { name, sort, desc } = options
const baseDestPath = baseDestPaths['api']
const jsDp = createPath(baseDestPath)
const mdDp = createPath(baseDestPath)
const jsSrc = templatePaths['apiJs']
const mdSrc = templatePaths['apiMd']
const jsDest = jsDp(`./${sort}/${name}/index.js`)
const mdDest = mdDp(`./${sort}/${name}/README.md`)
const shouldCreate = await isWillCreate(jsDest, 'api')
if (shouldCreate) {
await gen(jsSrc, jsDest, { name, sort, desc })
await gen(mdSrc, mdDest, { name, sort, desc })
return noticeSuccess()
}
noticeFail()
}
// 生成代码
const gen = async (src, dest, payload) => {
let template = readFileSync(src).toString()
template = templateCompile(template)(payload)
await createFile(dest, template)
}
// 是否将创建
const isWillCreate = async (dest, type = '文件') => {
if (pathExistsSync(dest)) {
return await useInquirerConfirm(
type + '已存在,是否覆盖?',
false
)
}
return true
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。