79 lines
2.3 KiB
Bash
Executable File
79 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 配置项
|
||
ROOT_DIR="/home/z/my-project/mini-services"
|
||
DIST_DIR="/tmp/build_fullstack_$BUILD_ID/mini-services-dist"
|
||
|
||
main() {
|
||
echo "🚀 开始批量构建..."
|
||
|
||
# 检查 rootdir 是否存在
|
||
if [ ! -d "$ROOT_DIR" ]; then
|
||
echo "ℹ️ 目录 $ROOT_DIR 不存在,跳过构建"
|
||
return
|
||
fi
|
||
|
||
# 创建输出目录(如果不存在)
|
||
mkdir -p "$DIST_DIR"
|
||
|
||
# 统计变量
|
||
success_count=0
|
||
fail_count=0
|
||
|
||
# 遍历 mini-services 目录下的所有文件夹
|
||
for dir in "$ROOT_DIR"/*; do
|
||
# 检查是否是目录且包含 package.json
|
||
if [ -d "$dir" ] && [ -f "$dir/package.json" ]; then
|
||
project_name=$(basename "$dir")
|
||
|
||
# 智能查找入口文件 (按优先级查找)
|
||
entry_path=""
|
||
for entry in "src/index.ts" "index.ts" "src/index.js" "index.js"; do
|
||
if [ -f "$dir/$entry" ]; then
|
||
entry_path="$dir/$entry"
|
||
break
|
||
fi
|
||
done
|
||
|
||
if [ -z "$entry_path" ]; then
|
||
echo "⚠️ 跳过 $project_name: 未找到入口文件 (index.ts/js)"
|
||
continue
|
||
fi
|
||
|
||
echo ""
|
||
echo "📦 正在构建: $project_name..."
|
||
|
||
# 使用 bun build CLI 构建
|
||
output_file="$DIST_DIR/mini-service-$project_name.js"
|
||
|
||
if bun build "$entry_path" \
|
||
--outfile "$output_file" \
|
||
--target bun \
|
||
--minify; then
|
||
echo "✅ $project_name 构建成功 -> $output_file"
|
||
success_count=$((success_count + 1))
|
||
else
|
||
echo "❌ $project_name 构建失败"
|
||
fail_count=$((fail_count + 1))
|
||
fi
|
||
fi
|
||
done
|
||
|
||
if [ -f ./.zscripts/mini-services-start.sh ]; then
|
||
cp ./.zscripts/mini-services-start.sh "$DIST_DIR/mini-services-start.sh"
|
||
chmod +x "$DIST_DIR/mini-services-start.sh"
|
||
fi
|
||
|
||
echo ""
|
||
echo "🎉 所有任务完成!"
|
||
if [ $success_count -gt 0 ] || [ $fail_count -gt 0 ]; then
|
||
echo "✅ 成功: $success_count 个"
|
||
if [ $fail_count -gt 0 ]; then
|
||
echo "❌ 失败: $fail_count 个"
|
||
fi
|
||
fi
|
||
}
|
||
|
||
main
|
||
|