Rustelo/scripts/build/copy-css-assets.js
Jesús Pérez 0d0297423e
Some checks failed
CI/CD Pipeline / Test Suite (push) Has been cancelled
CI/CD Pipeline / Security Audit (push) Has been cancelled
CI/CD Pipeline / Performance Benchmarks (push) Has been cancelled
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
CI/CD Pipeline / Build Docker Image (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Cleanup (push) Has been cancelled
chore: fix with CI and pre-commit
2026-02-08 20:37:49 +00:00

89 lines
2.5 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* CSS Asset Deployment Script
*
* Copies generated CSS files from assets/styles/ to public/styles/ for deployment.
*
* Files copied:
* - *.min.css bundles (site, app, enhancements)
* - website.css (UnoCSS generated)
* - highlight-github-dark.min.css (syntax highlighting)
*
* Usage:
* node scripts/copy-css-assets.js
*/
const fs = require('fs');
const path = require('path');
async function copyCssAssets() {
try {
const assetsStylesDir = path.join(__dirname, '../assets/styles');
const publicStylesDir = path.join(__dirname, '../public/styles');
// Ensure public/styles directory exists
if (!fs.existsSync(publicStylesDir)) {
fs.mkdirSync(publicStylesDir, { recursive: true });
console.log('📁 Created public/styles/ directory');
}
// Files to copy from assets/styles/ to public/styles/
const filesToCopy = [
'site.min.css',
'app.min.css',
'enhancements.min.css',
'website.css',
'highlight-github-dark.min.css'
];
const copiedFiles = [];
const missingFiles = [];
for (const fileName of filesToCopy) {
const sourcePath = path.join(assetsStylesDir, fileName);
const destPath = path.join(publicStylesDir, fileName);
if (fs.existsSync(sourcePath)) {
fs.copyFileSync(sourcePath, destPath);
const size = Math.round(fs.statSync(destPath).size / 1024);
copiedFiles.push(`${fileName} (${size}KB)`);
} else {
missingFiles.push(fileName);
}
}
console.log('📦 CSS Asset Deployment Complete!');
console.log('');
if (copiedFiles.length > 0) {
console.log('✅ Copied to public/styles/:');
copiedFiles.forEach(file => console.log(` 📄 ${file}`));
}
if (missingFiles.length > 0) {
console.log('');
console.log('⚠️ Missing source files (skipped):');
missingFiles.forEach(file => console.log(`${file}`));
console.log('');
console.log('💡 Run build scripts first to generate missing files');
}
const totalFiles = copiedFiles.length;
const totalSize = copiedFiles.reduce((sum, file) => {
const sizeMatch = file.match(/\((\d+)KB\)/);
return sum + (sizeMatch ? parseInt(sizeMatch[1]) : 0);
}, 0);
console.log('');
console.log(`📊 Deployment Summary: ${totalFiles} files, ${totalSize}KB total`);
console.log('🚀 Ready for Leptos deployment to target/site/');
} catch (error) {
console.error('❌ Error copying CSS assets:', error.message);
process.exit(1);
}
}
copyCssAssets();