xiaoluolyg--god
77 行
2.2 KiB
Bash
77 行
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
# JiuwenClaw 打包脚本
|
|
# 1. 编译前端 (jiuwenclaw/channels/web/frontend)
|
|
# 2. 构建 wheel 包(包含前端 dist)
|
|
|
|
set -e
|
|
PROJECT_ROOT="$(cd "$(dirname "$(dirname "$0")")" && pwd)"
|
|
|
|
echo "[build] 项目根目录: $PROJECT_ROOT"
|
|
|
|
# 1. 编译前端
|
|
WEB_DIR="$PROJECT_ROOT/jiuwenclaw/channels/web/frontend"
|
|
if [[ ! -d "$WEB_DIR" ]]; then
|
|
echo "[build] 错误: 前端目录不存在: $WEB_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[build] 正在编译前端..."
|
|
cd "$WEB_DIR"
|
|
if [[ ! -d node_modules ]]; then
|
|
echo "[build] 安装 npm 依赖..."
|
|
npm install
|
|
fi
|
|
npm run build
|
|
cd "$PROJECT_ROOT"
|
|
|
|
DIST_DIR="$WEB_DIR/dist"
|
|
if [[ ! -d "$DIST_DIR" ]]; then
|
|
echo "[build] 错误: 前端编译输出不存在: $DIST_DIR" >&2
|
|
exit 1
|
|
fi
|
|
echo "[build] 前端编译完成: $DIST_DIR"
|
|
|
|
# 临时移走 node_modules,避免被打包进 wheel
|
|
NODE_MODULES="$WEB_DIR/node_modules"
|
|
NODE_MODULES_BAK="$WEB_DIR/node_modules.bak"
|
|
NODE_MODULES_MOVED=false
|
|
if [[ -d "$NODE_MODULES" ]]; then
|
|
echo "[build] 临时移走 node_modules 以减小 wheel 体积..."
|
|
mv "$NODE_MODULES" "$NODE_MODULES_BAK"
|
|
NODE_MODULES_MOVED=true
|
|
fi
|
|
|
|
cleanup() {
|
|
# 恢复 node_modules
|
|
if [[ "$NODE_MODULES_MOVED" == "true" && -d "$NODE_MODULES_BAK" ]]; then
|
|
mv "$NODE_MODULES_BAK" "$NODE_MODULES"
|
|
echo "[build] 已恢复 node_modules"
|
|
fi
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
# 2. 构建 wheel
|
|
echo "[build] 正在构建 wheel 包..."
|
|
pip install -q --upgrade build wheel
|
|
python -m build --wheel --no-isolation
|
|
|
|
# 确保 dist 目录存在
|
|
DIST_OUTPUT="$PROJECT_ROOT/dist"
|
|
if [[ ! -d "$DIST_OUTPUT" ]]; then
|
|
mkdir -p "$DIST_OUTPUT"
|
|
echo "[build] 创建 dist 目录: $DIST_OUTPUT"
|
|
fi
|
|
echo "[build] 完成! wheel 包位于: $DIST_OUTPUT"
|
|
ls -la dist/*.whl 2>/dev/null || true
|
|
|
|
# 3. 构建 TUI wheel
|
|
if ! command -v bun &>/dev/null; then
|
|
echo "[build] 跳过 TUI 构建: 未找到 bun 命令" >&2
|
|
echo "完成bun安装: curl -fsSL https://bun.sh/install | bash # 针对 macOS、Linux 和 WSL" >&2
|
|
else
|
|
echo "[build] 正在构建TUI的 wheel包..."
|
|
cd "$PROJECT_ROOT"
|
|
python scripts/build_python_packages.py --target all --clean --install-js-deps
|
|
echo "[build] TUI的 wheel 包构建完成"
|
|
fi
|