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
This commit is contained in:
101
build-production.sh
Executable file
101
build-production.sh
Executable file
@@ -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! 🚀"
|
||||
Reference in New Issue
Block a user