clean-dev.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /**
  2. * 可选本地维护脚本(`pnpm run clean:dev`)
  3. *
  4. * 说明:历史上本脚本会批量删除模板演示资源并重写 `router/modules`、README 等,
  5. * 与当前 zkxw 已裁剪的 `web-admin` 冲突。**已移除所有破坏性步骤**。
  6. *
  7. * 现仅支持:在确认后清空 `src/mock/upgrade/changeLog.ts` 中的演示升级记录(可选)。
  8. */
  9. import fs from 'fs/promises'
  10. import path from 'path'
  11. const theme = {
  12. reset: '\x1b[0m',
  13. bold: '\x1b[1m',
  14. dim: '\x1b[2m',
  15. primary: '\x1b[38;5;75m',
  16. success: '\x1b[38;5;82m',
  17. warning: '\x1b[38;5;220m',
  18. error: '\x1b[38;5;196m',
  19. gray: '\x1b[38;5;245m',
  20. white: '\x1b[38;5;255m'
  21. }
  22. const fmt = {
  23. title: (t: string) => `${theme.bold}${theme.primary}${t}${theme.reset}`,
  24. success: (t: string) => `${theme.success}${t}${theme.reset}`,
  25. error: (t: string) => `${theme.error}${t}${theme.reset}`,
  26. warning: (t: string) => `${theme.warning}${t}${theme.reset}`,
  27. highlight: (t: string) => `${theme.bold}${theme.white}${t}${theme.reset}`,
  28. dim: (t: string) => `${theme.dim}${theme.gray}${t}${theme.reset}`
  29. }
  30. async function getUserConfirmation(): Promise<boolean> {
  31. const { createInterface } = await import('readline')
  32. return new Promise((resolve) => {
  33. const rl = createInterface({ input: process.stdin, output: process.stdout })
  34. console.log()
  35. console.log(` ${fmt.highlight('清空 mock 升级日志')} ${fmt.dim('(src/mock/upgrade/changeLog.ts)')}`)
  36. console.log(` ${fmt.dim('输入 yes 并回车确认,其它键取消')}`)
  37. console.log()
  38. process.stdout.write(' > ')
  39. rl.question('', (answer: string) => {
  40. rl.close()
  41. resolve(answer.toLowerCase().trim() === 'yes')
  42. })
  43. })
  44. }
  45. async function resetChangeLog(): Promise<void> {
  46. const changeLogPath = path.resolve(process.cwd(), 'src/mock/upgrade/changeLog.ts')
  47. const cleaned = `import { ref } from 'vue'
  48. interface UpgradeLog {
  49. version: string
  50. title: string
  51. date: string
  52. detail?: string[]
  53. requireReLogin?: boolean
  54. remark?: string
  55. }
  56. export const upgradeLogList = ref<UpgradeLog[]>([])
  57. `
  58. await fs.writeFile(changeLogPath, cleaned, 'utf-8')
  59. console.log(` ${fmt.success('已写入')}: ${changeLogPath}`)
  60. }
  61. async function main() {
  62. console.clear()
  63. console.log()
  64. console.log(` ${fmt.title('web-admin · clean-dev(安全模式)')}`)
  65. console.log(` ${fmt.dim('不会删除路由、README、业务页面或重写 routesAlias。')}`)
  66. console.log()
  67. const ok = await getUserConfirmation()
  68. if (!ok) {
  69. console.log(` ${fmt.warning('已取消')}`)
  70. console.log()
  71. return
  72. }
  73. try {
  74. await resetChangeLog()
  75. console.log()
  76. console.log(` ${fmt.success('完成')}`)
  77. } catch (e) {
  78. console.log(` ${fmt.error('失败: ' + String(e))}`)
  79. process.exit(1)
  80. }
  81. console.log()
  82. }
  83. main().catch((err) => {
  84. console.error(err)
  85. process.exit(1)
  86. })