upload.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #!/bin/bash
  2. ###############################################################################
  3. # fmode-tikhub-api-customize CDN上传脚本
  4. #
  5. # 功能:
  6. # 1. 上传打包后的文件到七牛云CDN
  7. # 2. 支持上传指定版本或最新版本
  8. #
  9. # 使用方法:
  10. # chmod +x upload.sh
  11. # ./upload.sh # 上传最新版本
  12. # ./upload.sh 1.0.0 # 上传指定版本
  13. #
  14. # 前置条件:
  15. # 需要安装并配置 qshell 工具
  16. # 参考: https://developer.qiniu.com/kodo/tools/1302/qshell
  17. ###############################################################################
  18. # 设置错误时退出
  19. set -e
  20. # 颜色输出
  21. GREEN='\033[0;32m'
  22. YELLOW='\033[1;33m'
  23. RED='\033[0;31m'
  24. BLUE='\033[0;34m'
  25. NC='\033[0m' # No Color
  26. echo -e "${GREEN}==================================================${NC}"
  27. echo -e "${GREEN} fmode-tikhub-api-customize CDN上传脚本${NC}"
  28. echo -e "${GREEN}==================================================${NC}"
  29. # 检查qshell是否安装
  30. if ! command -v qshell &> /dev/null; then
  31. echo -e "${RED}错误: qshell 未安装${NC}"
  32. echo -e "${YELLOW}请先安装 qshell: https://developer.qiniu.com/kodo/tools/1302/qshell${NC}"
  33. exit 1
  34. fi
  35. # 检查是否在正确的目录
  36. if [ ! -f "package.json" ]; then
  37. echo -e "${RED}错误: package.json 不存在${NC}"
  38. echo -e "${YELLOW}请确保在 fmode-tikhub-api-customize 目录下运行此脚本${NC}"
  39. exit 1
  40. fi
  41. # 获取版本号(从参数或package.json)
  42. if [ -n "$1" ]; then
  43. VERSION="$1"
  44. echo -e "${YELLOW}使用指定版本: ${VERSION}${NC}"
  45. else
  46. VERSION=$(node -p "require('./package.json').version" 2>/dev/null || echo "1.0.0")
  47. echo -e "${YELLOW}使用package.json版本: ${VERSION}${NC}"
  48. fi
  49. # 检查dist目录是否存在
  50. DIST_DIR="dist/${VERSION}"
  51. if [ ! -d "${DIST_DIR}" ]; then
  52. echo -e "${RED}错误: ${DIST_DIR} 目录不存在${NC}"
  53. echo -e "${YELLOW}请先运行 ./build.sh 构建项目${NC}"
  54. exit 1
  55. fi
  56. # CDN配置
  57. BUCKET="nova-repos"
  58. CDN_PREFIX="x/fmode-tikhub-api-customize/${VERSION}"
  59. echo ""
  60. echo -e "${BLUE}上传配置:${NC}"
  61. echo -e " Bucket: ${BUCKET}"
  62. echo -e " CDN路径: ${CDN_PREFIX}"
  63. echo -e " 本地目录: ${DIST_DIR}"
  64. echo ""
  65. # 确认上传
  66. read -p "确认上传到CDN?(y/N) " -n 1 -r
  67. echo
  68. if [[ ! $REPLY =~ ^[Yy]$ ]]; then
  69. echo -e "${YELLOW}取消上传${NC}"
  70. exit 0
  71. fi
  72. echo ""
  73. echo -e "${YELLOW}开始上传文件...${NC}"
  74. # 上传文件列表
  75. FILES=(
  76. "fmode-tikhub-api-customize.js"
  77. "fmode-tikhub-api-customize.js.map"
  78. "fmode-tikhub-api-customize.min.js"
  79. "fmode-tikhub-api-customize.min.js.map"
  80. "fmode-tikhub-api-customize.cjs"
  81. "fmode-tikhub-api-customize.cjs.map"
  82. "fmode-tikhub-api-customize.min.cjs"
  83. "fmode-tikhub-api-customize.min.cjs.map"
  84. )
  85. UPLOAD_COUNT=0
  86. FAILED_COUNT=0
  87. # 上传每个文件
  88. for FILE in "${FILES[@]}"; do
  89. LOCAL_FILE="${DIST_DIR}/${FILE}"
  90. if [ ! -f "${LOCAL_FILE}" ]; then
  91. echo -e "${YELLOW}⊘ 跳过: ${FILE} (文件不存在)${NC}"
  92. continue
  93. fi
  94. CDN_KEY="${CDN_PREFIX}/${FILE}"
  95. echo -e "${BLUE}↑ 上传: ${FILE}${NC}"
  96. if qshell rput "${BUCKET}" "${CDN_KEY}" "${LOCAL_FILE}" --overwrite; then
  97. echo -e "${GREEN}✓ 成功: ${FILE}${NC}"
  98. UPLOAD_COUNT=$((UPLOAD_COUNT + 1))
  99. else
  100. echo -e "${RED}✗ 失败: ${FILE}${NC}"
  101. FAILED_COUNT=$((FAILED_COUNT + 1))
  102. fi
  103. echo ""
  104. done
  105. # 显示结果
  106. echo -e "${GREEN}==================================================${NC}"
  107. if [ $FAILED_COUNT -eq 0 ]; then
  108. echo -e "${GREEN} 上传完成!${NC}"
  109. else
  110. echo -e "${YELLOW} 上传完成(有${FAILED_COUNT}个文件失败)${NC}"
  111. fi
  112. echo -e "${GREEN}==================================================${NC}"
  113. echo ""
  114. echo -e "${BLUE}上传统计:${NC}"
  115. echo -e " 成功: ${UPLOAD_COUNT} 个文件"
  116. echo -e " 失败: ${FAILED_COUNT} 个文件"
  117. echo ""
  118. echo -e "${YELLOW}CDN访问地址:${NC}"
  119. echo -e " ${GREEN}# ESM (生产环境)${NC}"
  120. echo -e " https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.js"
  121. echo ""
  122. echo -e " ${GREEN}# ESM (开发环境)${NC}"
  123. echo -e " https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.js"
  124. echo ""
  125. echo -e " ${GREEN}# CJS (生产环境)${NC}"
  126. echo -e " https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.cjs"
  127. echo ""
  128. echo -e "${YELLOW}使用示例:${NC}"
  129. echo -e " ${GREEN}# Deno / Node.js ESM${NC}"
  130. echo -e " import { createTikHubRouter } from 'https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.js?code=xxxxxxx';"
  131. echo ""
  132. echo -e " ${GREEN}# Node.js CJS${NC}"
  133. echo -e " const { createTikHubRouter } = require('https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.cjs?code=xxxxxxx');"
  134. echo ""
  135. if [ $FAILED_COUNT -eq 0 ]; then
  136. exit 0
  137. else
  138. exit 1
  139. fi