Spaces:
Running
Running
File size: 5,288 Bytes
466436b 0b679f2 c355051 df06d8a eac5346 df06d8a c8d8fd0 466436b 0b679f2 466436b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
#!/bin/bash
# Trigo Hugging Face Space Deployment Script
# This script copies the trigo-web project to the HF Space repo and prepares it for deployment
set -e
echo "🚀 Trigo HF Space Deployment Script"
echo "===================================="
echo ""
# Define paths
PROJECT_ROOT="/home/camus/work/trigo"
TRIGO_WEB="$PROJECT_ROOT/trigo-web"
HF_SPACE="$PROJECT_ROOT/third_party/trigo-hfspace"
# Check if directories exist
if [ ! -d "$TRIGO_WEB" ]; then
echo "❌ Error: trigo-web directory not found at $TRIGO_WEB"
exit 1
fi
if [ ! -d "$HF_SPACE" ]; then
echo "❌ Error: HF Space directory not found at $HF_SPACE"
exit 1
fi
echo "📂 Project directory: $TRIGO_WEB"
echo "📂 HF Space directory: $HF_SPACE"
echo ""
# Clean up old trigo-web in HF space if it exists
if [ -d "$HF_SPACE/trigo-web" ]; then
echo "🧹 Cleaning up old trigo-web directory..."
rm -rf "$HF_SPACE/trigo-web"
fi
# Copy trigo-web to HF space
echo "📦 Copying trigo-web to HF Space repository..."
cp -r "$TRIGO_WEB" "$HF_SPACE/"
# Remove node_modules and dist folders (will be built in Docker)
echo "🧹 Removing node_modules and dist folders (will be rebuilt in Docker)..."
find "$HF_SPACE/trigo-web" -type d -name "node_modules" -exec rm -rf {} + 2>/dev/null || true
find "$HF_SPACE/trigo-web" -type d -name "dist" -exec rm -rf {} + 2>/dev/null || true
# Remove test files
echo "🧹 Removing test files..."
rm -rf "$HF_SPACE/trigo-web/tests" 2>/dev/null || true
# Apply HF Space specific patches
echo "🔧 Applying HF Space patches..."
# Create tsconfig.json for app
echo " Creating tsconfig.json..."
cat > "$HF_SPACE/trigo-web/app/tsconfig.json" << 'EOF'
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
/* Path aliases */
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"@inc/*": ["../inc/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}
EOF
# Create tsconfig.node.json for app
echo " Creating tsconfig.node.json..."
cat > "$HF_SPACE/trigo-web/app/tsconfig.node.json" << 'EOF'
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
}
EOF
# Patch package.json to skip type checking and add missing dependencies
echo " Patching app/package.json..."
cd "$HF_SPACE/trigo-web/app"
# Remove vue-tsc from build script
sed -i 's/"build": "vue-tsc --noEmit && vite build"/"build": "vite build"/' package.json
# Add missing dependencies using jq (or sed if jq not available)
if command -v jq &> /dev/null; then
# Use jq for precise JSON editing
jq '.dependencies["onnxruntime-web"] = "^1.23.2" | .devDependencies["@types/node"] = "^24.10.1"' package.json > package.json.tmp && mv package.json.tmp package.json
else
# Fallback: add dependencies manually if not present
if ! grep -q '"onnxruntime-web"' package.json; then
sed -i '/"dependencies": {/a \ "onnxruntime-web": "^1.23.2",' package.json
fi
if ! grep -q '"@types/node"' package.json; then
sed -i '/"devDependencies": {/a \ "@types/node": "^24.10.1",' package.json
fi
fi
cd "$HF_SPACE"
# Remove prepare script from root package.json (husky is not needed in production)
echo " Removing prepare script from root package.json..."
cd "$HF_SPACE/trigo-web"
if command -v jq &> /dev/null; then
jq 'del(.scripts.prepare)' package.json > package.json.tmp && mv package.json.tmp package.json
else
sed -i '/"prepare":/d' package.json
fi
cd "$HF_SPACE"
# Remove VITE_SERVER_URL from .env (production should use window.location.origin)
echo " Removing VITE_SERVER_URL from .env for production..."
cd "$HF_SPACE/trigo-web"
sed -i '/^VITE_SERVER_URL=/d' .env 2>/dev/null || true
# Set NODE_ENV to production
sed -i 's/^NODE_ENV=development/NODE_ENV=production/' .env 2>/dev/null || true
# Also remove .env.local which has local dev settings
rm -f .env.local backend/.env.local 2>/dev/null || true
cd "$HF_SPACE"
# Patch backend package.json for esbuild output location
echo " Patching backend package.json for esbuild output..."
cd "$HF_SPACE/trigo-web/backend"
sed -i 's|dist/backend/src/server.js|dist/server.js|g' package.json
cd "$HF_SPACE"
# Patch backend server.ts for esbuild frontend path
echo " Patching backend server.ts for frontend path..."
sed -i 's|"../../../../app/dist"|"../../app/dist"|' "$HF_SPACE/trigo-web/backend/src/server.ts"
echo ""
echo "✅ Files prepared and patched successfully!"
echo ""
echo "📋 Next steps:"
echo " 1. cd $HF_SPACE"
echo " 2. git add ."
echo " 3. git commit -m 'Deploy Trigo game'"
echo " 4. git push"
echo ""
echo "🌐 After pushing, HF will automatically build and deploy your app."
echo ""
|