支持生成、发布 Typescript SDK
This commit is contained in:
95
script/publish-npm.sh
Executable file
95
script/publish-npm.sh
Executable 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
|
||||
Reference in New Issue
Block a user