clean-dev.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * 可选本地维护脚本(`pnpm run clean:dev`)
  3. *
  4. * 说明:历史上本脚本会批量删除模板演示资源并重写 `router/modules`、README 等,
  5. * 与当前 shanxia2.0 已裁剪的 `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(
  36. ` ${fmt.highlight('清空 mock 升级日志')} ${fmt.dim('(src/mock/upgrade/changeLog.ts)')}`
  37. )
  38. console.log(` ${fmt.dim('输入 yes 并回车确认,其它键取消')}`)
  39. console.log()
  40. process.stdout.write(' > ')
  41. rl.question('', (answer: string) => {
  42. rl.close()
  43. resolve(answer.toLowerCase().trim() === 'yes')
  44. })
  45. })
  46. }
  47. async function resetChangeLog(): Promise<void> {
  48. const changeLogPath = path.resolve(process.cwd(), 'src/mock/upgrade/changeLog.ts')
  49. const cleaned = `import { ref } from 'vue'
  50. interface UpgradeLog {
  51. version: string
  52. title: string
  53. date: string
  54. detail?: string[]
  55. requireReLogin?: boolean
  56. remark?: string
  57. }
  58. export const upgradeLogList = ref<UpgradeLog[]>([])
  59. `
  60. await fs.writeFile(changeLogPath, cleaned, 'utf-8')
  61. console.log(` ${fmt.success('已写入')}: ${changeLogPath}`)
  62. }
  63. async function main() {
  64. console.clear()
  65. console.log()
  66. console.log(` ${fmt.title('web-admin · clean-dev(安全模式)')}`)
  67. console.log(` ${fmt.dim('不会删除路由、README、业务页面或重写 routesAlias。')}`)
  68. console.log()
  69. const ok = await getUserConfirmation()
  70. if (!ok) {
  71. console.log(` ${fmt.warning('已取消')}`)
  72. console.log()
  73. return
  74. }
  75. try {
  76. await resetChangeLog()
  77. console.log()
  78. console.log(` ${fmt.success('完成')}`)
  79. } catch (e) {
  80. console.log(` ${fmt.error('失败: ' + String(e))}`)
  81. process.exit(1)
  82. }
  83. console.log()
  84. }
  85. main().catch((err) => {
  86. console.error(err)
  87. process.exit(1)
  88. })