Files
shanxia2.0/web-admin/scripts/clean-dev.ts
T
2026-05-30 14:03:11 +08:00

99 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 可选本地维护脚本(`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)
})