支持生成、发布 Typescript SDK

This commit is contained in:
sky
2025-08-21 04:36:13 +08:00
parent cfde112832
commit cebac01716
6 changed files with 232 additions and 5 deletions

95
script/publish-npm.sh Executable file
View File

@@ -0,0 +1,95 @@
#!/bin/bash
# npm发布脚本
# 参数1: 包名
# 参数2: 版本号
# 参数3: 工作目录
# 确保提供了必要的参数
if [ $# -lt 3 ]; then
echo "错误:缺少必要参数"
echo "用法:$0 <包名> <版本号> <工作目录>"
exit 1
fi
PACKAGE_NAME="$1"
VERSION="$2"
WORK_DIR="$3"
# 检查工作目录是否存在
if [ ! -d "$WORK_DIR" ]; then
echo "错误:工作目录 $WORK_DIR 不存在"
exit 1
fi
# 切换到工作目录
cd "$WORK_DIR"
# 设置npm注册表
echo "设置npm注册表..."
npm config set @shenxianhe:registry=https://git.0yue.com/api/packages/shenxianhe/npm/
# 配置npm认证如果提供了环境变量
configure_npm_auth() {
# 如果设置了 SHENXIANHE_AUTH_TOKEN 变量则配置npm
if [ -n "$SHENXIANHE_AUTH_TOKEN" ]; then
echo "检测到 SHENXIANHE_AUTH_TOKEN 环境变量配置npm认证..."
npm config set -- '//git.0yue.com/api/packages/shenxianhe/npm/:_authToken' "$SHENXIANHE_AUTH_TOKEN"
fi
# 无论是否设置了环境变量都继续执行因为可能之前已经配置过npm
echo "正在使用当前npm配置进行认证..."
}
# 显示认证错误提示信息
display_auth_error() {
echo "提示如果是认证失败请尝试设置环境变量export SHENXIANHE_AUTH_TOKEN=your_access_token"
}
# 调用函数配置npm认证如果有环境变量
configure_npm_auth
# 检查包是否已存在
check_package_exists() {
echo "检查包 $PACKAGE_NAME@$VERSION 是否已存在..."
# 使用npm view命令检查包是否存在
if npm view "$PACKAGE_NAME@$VERSION" --registry=https://git.0yue.com/api/packages/shenxianhe/npm/ > /dev/null 2>&1; then
return 0 # 包已存在
else
return 1 # 包不存在
fi
}
# 如果包已存在,询问是否删除
if check_package_exists; then
echo "警告:包 $PACKAGE_NAME@$VERSION 已存在"
echo "是否要先删除现有包?(y/n)"
read -r answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
echo "删除现有包 $PACKAGE_NAME@$VERSION..."
npm unpublish --force "$PACKAGE_NAME@$VERSION" --registry=https://git.0yue.com/api/packages/shenxianhe/npm/
if [ $? -ne 0 ]; then
echo "错误:删除包失败"
display_auth_error
exit 1
fi
else
echo "取消发布操作"
exit 1
fi
fi
# 发布包
echo "发布包 $PACKAGE_NAME@$VERSION..."
npm publish --registry=https://git.0yue.com/api/packages/shenxianhe/npm/
# 检查发布是否成功
if [ $? -eq 0 ]; then
echo "成功发布包 $PACKAGE_NAME@$VERSION 到 npm 仓库"
else
echo "错误:发布包失败"
display_auth_error
exit 1
fi