88 lines
2.6 KiB
JavaScript
88 lines
2.6 KiB
JavaScript
|
|
#!/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();
|