| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- #!/bin/bash
- ###############################################################################
- # fmode-tikhub-api-customize CDN上传脚本
- #
- # 功能:
- # 1. 上传打包后的文件到七牛云CDN
- # 2. 支持上传指定版本或最新版本
- #
- # 使用方法:
- # chmod +x upload.sh
- # ./upload.sh # 上传最新版本
- # ./upload.sh 1.0.0 # 上传指定版本
- #
- # 前置条件:
- # 需要安装并配置 qshell 工具
- # 参考: https://developer.qiniu.com/kodo/tools/1302/qshell
- ###############################################################################
- # 设置错误时退出
- set -e
- # 颜色输出
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- RED='\033[0;31m'
- BLUE='\033[0;34m'
- NC='\033[0m' # No Color
- echo -e "${GREEN}==================================================${NC}"
- echo -e "${GREEN} fmode-tikhub-api-customize CDN上传脚本${NC}"
- echo -e "${GREEN}==================================================${NC}"
- # 检查qshell是否安装
- if ! command -v qshell &> /dev/null; then
- echo -e "${RED}错误: qshell 未安装${NC}"
- echo -e "${YELLOW}请先安装 qshell: https://developer.qiniu.com/kodo/tools/1302/qshell${NC}"
- exit 1
- fi
- # 检查是否在正确的目录
- if [ ! -f "package.json" ]; then
- echo -e "${RED}错误: package.json 不存在${NC}"
- echo -e "${YELLOW}请确保在 fmode-tikhub-api-customize 目录下运行此脚本${NC}"
- exit 1
- fi
- # 获取版本号(从参数或package.json)
- if [ -n "$1" ]; then
- VERSION="$1"
- echo -e "${YELLOW}使用指定版本: ${VERSION}${NC}"
- else
- VERSION=$(node -p "require('./package.json').version" 2>/dev/null || echo "1.0.0")
- echo -e "${YELLOW}使用package.json版本: ${VERSION}${NC}"
- fi
- # 检查dist目录是否存在
- DIST_DIR="dist/${VERSION}"
- if [ ! -d "${DIST_DIR}" ]; then
- echo -e "${RED}错误: ${DIST_DIR} 目录不存在${NC}"
- echo -e "${YELLOW}请先运行 ./build.sh 构建项目${NC}"
- exit 1
- fi
- # CDN配置
- BUCKET="nova-repos"
- CDN_PREFIX="x/fmode-tikhub-api-customize/${VERSION}"
- echo ""
- echo -e "${BLUE}上传配置:${NC}"
- echo -e " Bucket: ${BUCKET}"
- echo -e " CDN路径: ${CDN_PREFIX}"
- echo -e " 本地目录: ${DIST_DIR}"
- echo ""
- # 确认上传
- read -p "确认上传到CDN?(y/N) " -n 1 -r
- echo
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- echo -e "${YELLOW}取消上传${NC}"
- exit 0
- fi
- echo ""
- echo -e "${YELLOW}开始上传文件...${NC}"
- # 上传文件列表
- FILES=(
- "fmode-tikhub-api-customize.js"
- "fmode-tikhub-api-customize.js.map"
- "fmode-tikhub-api-customize.min.js"
- "fmode-tikhub-api-customize.min.js.map"
- "fmode-tikhub-api-customize.cjs"
- "fmode-tikhub-api-customize.cjs.map"
- "fmode-tikhub-api-customize.min.cjs"
- "fmode-tikhub-api-customize.min.cjs.map"
- )
- UPLOAD_COUNT=0
- FAILED_COUNT=0
- # 上传每个文件
- for FILE in "${FILES[@]}"; do
- LOCAL_FILE="${DIST_DIR}/${FILE}"
- if [ ! -f "${LOCAL_FILE}" ]; then
- echo -e "${YELLOW}⊘ 跳过: ${FILE} (文件不存在)${NC}"
- continue
- fi
- CDN_KEY="${CDN_PREFIX}/${FILE}"
- echo -e "${BLUE}↑ 上传: ${FILE}${NC}"
- if qshell rput "${BUCKET}" "${CDN_KEY}" "${LOCAL_FILE}" --overwrite; then
- echo -e "${GREEN}✓ 成功: ${FILE}${NC}"
- UPLOAD_COUNT=$((UPLOAD_COUNT + 1))
- else
- echo -e "${RED}✗ 失败: ${FILE}${NC}"
- FAILED_COUNT=$((FAILED_COUNT + 1))
- fi
- echo ""
- done
- # 显示结果
- echo -e "${GREEN}==================================================${NC}"
- if [ $FAILED_COUNT -eq 0 ]; then
- echo -e "${GREEN} 上传完成!${NC}"
- else
- echo -e "${YELLOW} 上传完成(有${FAILED_COUNT}个文件失败)${NC}"
- fi
- echo -e "${GREEN}==================================================${NC}"
- echo ""
- echo -e "${BLUE}上传统计:${NC}"
- echo -e " 成功: ${UPLOAD_COUNT} 个文件"
- echo -e " 失败: ${FAILED_COUNT} 个文件"
- echo ""
- echo -e "${YELLOW}CDN访问地址:${NC}"
- echo -e " ${GREEN}# ESM (生产环境)${NC}"
- echo -e " https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.js"
- echo ""
- echo -e " ${GREEN}# ESM (开发环境)${NC}"
- echo -e " https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.js"
- echo ""
- echo -e " ${GREEN}# CJS (生产环境)${NC}"
- echo -e " https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.cjs"
- echo ""
- echo -e "${YELLOW}使用示例:${NC}"
- echo -e " ${GREEN}# Deno / Node.js ESM${NC}"
- echo -e " import { createTikHubRouter } from 'https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.js?code=xxxxxxx';"
- echo ""
- echo -e " ${GREEN}# Node.js CJS${NC}"
- echo -e " const { createTikHubRouter } = require('https://repos.fmode.cn/${CDN_PREFIX}/fmode-tikhub-api-customize.min.cjs?code=xxxxxxx');"
- echo ""
- if [ $FAILED_COUNT -eq 0 ]; then
- exit 0
- else
- exit 1
- fi
|