99 lines
2.8 KiB
TypeScript
99 lines
2.8 KiB
TypeScript
/**
|
||
* 可选本地维护脚本(`pnpm run clean:dev`)
|
||
*
|
||
* 说明:历史上本脚本会批量删除模板演示资源并重写 `router/modules`、README 等,
|
||
* 与当前 shanxia2.0 已裁剪的 `web-admin` 冲突。**已移除所有破坏性步骤**。
|
||
*
|
||
* 现仅支持:在确认后清空 `src/mock/upgrade/changeLog.ts` 中的演示升级记录(可选)。
|
||
*/
|
||
import fs from 'fs/promises'
|
||
import path from 'path'
|
||
|
||
const theme = {
|
||
reset: '\x1b[0m',
|
||
bold: '\x1b[1m',
|
||
dim: '\x1b[2m',
|
||
primary: '\x1b[38;5;75m',
|
||
success: '\x1b[38;5;82m',
|
||
warning: '\x1b[38;5;220m',
|
||
error: '\x1b[38;5;196m',
|
||
gray: '\x1b[38;5;245m',
|
||
white: '\x1b[38;5;255m'
|
||
}
|
||
|
||
const fmt = {
|
||
title: (t: string) => `${theme.bold}${theme.primary}${t}${theme.reset}`,
|
||
success: (t: string) => `${theme.success}${t}${theme.reset}`,
|
||
error: (t: string) => `${theme.error}${t}${theme.reset}`,
|
||
warning: (t: string) => `${theme.warning}${t}${theme.reset}`,
|
||
highlight: (t: string) => `${theme.bold}${theme.white}${t}${theme.reset}`,
|
||
dim: (t: string) => `${theme.dim}${theme.gray}${t}${theme.reset}`
|
||
}
|
||
|
||
async function getUserConfirmation(): Promise<boolean> {
|
||
const { createInterface } = await import('readline')
|
||
return new Promise((resolve) => {
|
||
const rl = createInterface({ input: process.stdin, output: process.stdout })
|
||
console.log()
|
||
console.log(
|
||
` ${fmt.highlight('清空 mock 升级日志')} ${fmt.dim('(src/mock/upgrade/changeLog.ts)')}`
|
||
)
|
||
console.log(` ${fmt.dim('输入 yes 并回车确认,其它键取消')}`)
|
||
console.log()
|
||
process.stdout.write(' > ')
|
||
rl.question('', (answer: string) => {
|
||
rl.close()
|
||
resolve(answer.toLowerCase().trim() === 'yes')
|
||
})
|
||
})
|
||
}
|
||
|
||
async function resetChangeLog(): Promise<void> {
|
||
const changeLogPath = path.resolve(process.cwd(), 'src/mock/upgrade/changeLog.ts')
|
||
const cleaned = `import { ref } from 'vue'
|
||
|
||
interface UpgradeLog {
|
||
version: string
|
||
title: string
|
||
date: string
|
||
detail?: string[]
|
||
requireReLogin?: boolean
|
||
remark?: string
|
||
}
|
||
|
||
export const upgradeLogList = ref<UpgradeLog[]>([])
|
||
`
|
||
await fs.writeFile(changeLogPath, cleaned, 'utf-8')
|
||
console.log(` ${fmt.success('已写入')}: ${changeLogPath}`)
|
||
}
|
||
|
||
async function main() {
|
||
console.clear()
|
||
console.log()
|
||
console.log(` ${fmt.title('web-admin · clean-dev(安全模式)')}`)
|
||
console.log(` ${fmt.dim('不会删除路由、README、业务页面或重写 routesAlias。')}`)
|
||
console.log()
|
||
|
||
const ok = await getUserConfirmation()
|
||
if (!ok) {
|
||
console.log(` ${fmt.warning('已取消')}`)
|
||
console.log()
|
||
return
|
||
}
|
||
|
||
try {
|
||
await resetChangeLog()
|
||
console.log()
|
||
console.log(` ${fmt.success('完成')}`)
|
||
} catch (e) {
|
||
console.log(` ${fmt.error('失败: ' + String(e))}`)
|
||
process.exit(1)
|
||
}
|
||
console.log()
|
||
}
|
||
|
||
main().catch((err) => {
|
||
console.error(err)
|
||
process.exit(1)
|
||
})
|