Files
mivo/scripts/sync-assets.js

52 lines
1.6 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const projectRoot = path.resolve(__dirname, '..');
const publicVendor = path.join(projectRoot, 'public', 'assets', 'vendor');
// Ensure vendor directory exists
if (!fs.existsSync(publicVendor)) {
fs.mkdirSync(publicVendor, { recursive: true });
}
function copyDir(src, dest) {
if (!fs.existsSync(src)) return;
fs.mkdirSync(dest, { recursive: true });
let entries = fs.readdirSync(src, { withFileTypes: true });
for (let entry of entries) {
let srcPath = path.join(src, entry.name);
let destPath = path.join(dest, entry.name);
entry.isDirectory() ?
copyDir(srcPath, destPath) :
fs.copyFileSync(srcPath, destPath);
}
}
// 1. Localize flag-icons
console.log('Localizing flag-icons...');
const flagIconsSrc = path.join(projectRoot, 'node_modules', 'flag-icons');
const flagIconsDest = path.join(publicVendor, 'flag-icons');
if (fs.existsSync(flagIconsSrc)) {
// We only need CSS and Flags
if (!fs.existsSync(flagIconsDest)) fs.mkdirSync(flagIconsDest, { recursive: true });
// Copy CSS
const cssSrc = path.join(flagIconsSrc, 'css');
const cssDest = path.join(flagIconsDest, 'css');
copyDir(cssSrc, cssDest);
// Copy Flags
const flagsSrc = path.join(flagIconsSrc, 'flags');
const flagsDest = path.join(flagIconsDest, 'flags');
copyDir(flagsSrc, flagsDest);
console.log('✓ flag-icons localized.');
} else {
console.error('✗ flag-icons not found in node_modules.');
}
console.log('Asset synchronization complete.');