From 8762c7d2c94483f380d95e2c82bd5ccaf1b146cb Mon Sep 17 00:00:00 2001 From: Dwindi Ramadhana Date: Tue, 30 Dec 2025 17:13:34 +0700 Subject: [PATCH] feat: Add production build script Created build-production.sh to package plugin for production deployment. Features: - Verifies production builds exist for both SPAs - Uses rsync to copy files with smart exclusions - Excludes dev files (node_modules, src, config files, examples, etc.) - Includes only production dist folders - Creates timestamped zip file in dist/ directory - Shows file sizes for verification - Auto-cleanup of build directory Usage: ./build-production.sh Output: dist/woonoow-{version}-{timestamp}.zip Current build: woonoow-0.1.0-20251230_171321.zip (692K) - Customer SPA: 480K - Admin SPA: 2.6M --- build-production.sh | 101 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100755 build-production.sh diff --git a/build-production.sh b/build-production.sh new file mode 100755 index 0000000..9a1cda7 --- /dev/null +++ b/build-production.sh @@ -0,0 +1,101 @@ +#!/bin/bash + +# WooNooW Plugin - Production Build Script +# This script creates a production-ready zip file of the plugin + +set -e # Exit on error + +PLUGIN_NAME="woonoow" +VERSION=$(grep "Version:" woonoow.php | awk '{print $3}') +BUILD_DIR="build" +DIST_DIR="dist" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) +ZIP_NAME="${PLUGIN_NAME}-${VERSION}-${TIMESTAMP}.zip" + +echo "==========================================" +echo "WooNooW Production Build" +echo "==========================================" +echo "Plugin: ${PLUGIN_NAME}" +echo "Version: ${VERSION}" +echo "Timestamp: ${TIMESTAMP}" +echo "==========================================" + +# Clean previous builds +echo "Cleaning previous builds..." +rm -rf ${BUILD_DIR} +mkdir -p ${BUILD_DIR}/${PLUGIN_NAME} +mkdir -p ${DIST_DIR} + +# Copy plugin files +echo "Copying plugin files..." +rsync -av --progress \ + --exclude='node_modules' \ + --exclude='.git' \ + --exclude='.gitignore' \ + --exclude='build' \ + --exclude='dist' \ + --exclude='*.log' \ + --exclude='.DS_Store' \ + --exclude='customer-spa/src' \ + --exclude='customer-spa/public' \ + --exclude='customer-spa/node_modules' \ + --exclude='customer-spa/.vite' \ + --exclude='customer-spa/package.json' \ + --exclude='customer-spa/package-lock.json' \ + --exclude='customer-spa/vite.config.ts' \ + --exclude='customer-spa/tsconfig.json' \ + --exclude='customer-spa/tsconfig.node.json' \ + --exclude='customer-spa/index.html' \ + --exclude='admin-spa/src' \ + --exclude='admin-spa/public' \ + --exclude='admin-spa/node_modules' \ + --exclude='admin-spa/.vite' \ + --exclude='admin-spa/package.json' \ + --exclude='admin-spa/package-lock.json' \ + --exclude='admin-spa/vite.config.ts' \ + --exclude='admin-spa/tsconfig.json' \ + --exclude='admin-spa/tsconfig.node.json' \ + --exclude='admin-spa/index.html' \ + --exclude='examples' \ + --exclude='*.sh' \ + --exclude='*.md' \ + ./ ${BUILD_DIR}/${PLUGIN_NAME}/ + +# Verify production builds exist in source before copying +echo "Verifying production builds..." +if [ ! -f "customer-spa/dist/app.js" ]; then + echo "ERROR: Customer SPA production build not found!" + echo "Please run: cd customer-spa && npm run build" + exit 1 +fi + +if [ ! -f "admin-spa/dist/app.js" ]; then + echo "ERROR: Admin SPA production build not found!" + echo "Please run: cd admin-spa && npm run build" + exit 1 +fi + +echo "✓ Customer SPA build verified ($(du -h customer-spa/dist/app.js | cut -f1))" +echo "✓ Admin SPA build verified ($(du -h admin-spa/dist/app.js | cut -f1))" + +# Create zip file +echo "Creating zip file..." +cd ${BUILD_DIR} +zip -r ../${DIST_DIR}/${ZIP_NAME} ${PLUGIN_NAME} -q +cd .. + +# Calculate file size +FILE_SIZE=$(du -h ${DIST_DIR}/${ZIP_NAME} | cut -f1) + +echo "==========================================" +echo "✓ Production build complete!" +echo "==========================================" +echo "File: ${DIST_DIR}/${ZIP_NAME}" +echo "Size: ${FILE_SIZE}" +echo "==========================================" + +# Clean up build directory +echo "Cleaning up..." +rm -rf ${BUILD_DIR} + +echo "Done! 🚀"