deploy.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { exec } from 'child_process'
  2. const steps = [
  3. { name: '检查程序员精神状态', emoji: '🧐', command: 'echo "精神状态:适合摸鱼"' },
  4. { name: '编译TypeScript代码', emoji: '⚡', command: 'npm run build' },
  5. { name: '压缩打包', emoji: '📦', command: 'echo "打包完成!"' },
  6. { name: '上传到服务器', emoji: '🚀', command: 'scp -r dist/course root@haijunit.icu:/opt/course/' },
  7. { name: '重启服务', emoji: '🔁', command: 'echo "服务重启完成!"' }
  8. ]
  9. async function fancyDeploy() {
  10. console.log('🎬 开始表演部署魔术...\n')
  11. for (let i = 0; i < steps.length; i++) {
  12. const step = steps[i]
  13. const progress = `[${i + 1}/${steps.length}]`
  14. console.log(`${progress} ${step.emoji} ${step.name}`)
  15. try {
  16. await new Promise((resolve, reject) => {
  17. exec(step.command, (error) => {
  18. if (error && !step.command.startsWith('echo')) {
  19. reject(error)
  20. } else {
  21. console.log(` ✅ 完成\n`)
  22. resolve(true)
  23. }
  24. })
  25. })
  26. } catch (error) {
  27. console.log(` ❌ 失败: ${error}`)
  28. console.log('\n💡 建议:大声说"这在我电脑上是好的!"')
  29. return
  30. }
  31. }
  32. console.log('🎉 所有步骤完成!')
  33. console.log('🏆 恭喜你成功完成了一次华丽的部署!')
  34. }
  35. fancyDeploy()