Files
fail2ban-ui/build-tailwind.sh

98 lines
2.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# Build script for Tailwind CSS v3
# This script builds Tailwind CSS for production use
# Always installs latest Tailwind CSS v3 (matches CDN version)
set -e
echo "Building Tailwind CSS v3 for Fail2ban-UI..."
# Check if Node.js and npm are installed
if ! command -v node &> /dev/null; then
echo "Error: Node.js is not installed. Please install Node.js first."
echo "Visit: https://nodejs.org/"
exit 1
fi
if ! command -v npm &> /dev/null; then
echo "Error: npm is not installed. Please install npm first."
exit 1
fi
# Create directories if they don't exist
mkdir -p pkg/web/static
mkdir -p .tailwind-build
# Initialize package.json if it doesn't exist
if [ ! -f package.json ]; then
echo "Initializing npm package..."
npm init -y --silent
fi
# Install latest Tailwind CSS v3
echo "Installing latest Tailwind CSS v3..."
npm install -D tailwindcss@^3 --silent
# Verify the CLI binary exists
if [ ! -f "node_modules/.bin/tailwindcss" ] && [ ! -f "node_modules/tailwindcss/lib/cli.js" ]; then
echo "❌ Error: Tailwind CSS CLI not found after installation."
exit 1
fi
# Show installed version
INSTALLED_VERSION=$(npm list tailwindcss 2>/dev/null | grep "tailwindcss@" | head -1 | awk '{print $2}' || echo "unknown")
echo "Installed: $INSTALLED_VERSION"
# Create tailwind.config.js if it doesn't exist
if [ ! -f tailwind.config.js ]; then
echo "Creating Tailwind CSS configuration..."
cat > tailwind.config.js << 'EOF'
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./pkg/web/templates/**/*.html",
],
theme: {
extend: {},
},
plugins: [],
}
EOF
fi
# Create input CSS file if it doesn't exist
if [ ! -f .tailwind-build/input.css ]; then
echo "Creating input CSS file..."
cat > .tailwind-build/input.css << 'EOF'
@tailwind base;
@tailwind components;
@tailwind utilities;
EOF
fi
# Build Tailwind CSS
echo "Building Tailwind CSS..."
# Try different methods to run the CLI
if [ -f "node_modules/.bin/tailwindcss" ]; then
node_modules/.bin/tailwindcss -i .tailwind-build/input.css -o pkg/web/static/tailwind.css --minify
elif [ -f "node_modules/tailwindcss/lib/cli.js" ]; then
node node_modules/tailwindcss/lib/cli.js -i .tailwind-build/input.css -o pkg/web/static/tailwind.css --minify
elif command -v npx &> /dev/null; then
npx --yes tailwindcss -i .tailwind-build/input.css -o pkg/web/static/tailwind.css --minify
else
echo "❌ Error: Could not find Tailwind CSS CLI"
exit 1
fi
# Verify output file was created and is not empty
if [ ! -f "pkg/web/static/tailwind.css" ] || [ ! -s "pkg/web/static/tailwind.css" ]; then
echo "❌ Error: Output file was not created or is empty"
exit 1
fi
echo "✅ Tailwind CSS v3 built successfully!"
echo "Output: pkg/web/static/tailwind.css"
echo ""
echo "The application will now use the local Tailwind CSS file instead of the CDN."