项目文件夹

文件
wehub-resource-sync aa1a5d5763
CI / Release hygiene (push) Has been cancelled
CI / Python targeted tests (push) Has been cancelled
CI / Frontend build (push) Has been cancelled
Pages / Build and deploy public pages (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:18:17 +08:00

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