const fs = require('fs'); const path = require('path'); const { minify: minifyJs } = require('terser'); // Minify JavaScript files const jsFiles = [ 'js/shared.js' ]; // Minify CSS files (simple approach - remove whitespace and comments) function minifyCss(content) { return content .replace(/\/\*[\s\S]*?\*\//g, '') // Remove multi-line comments .replace(/\/\*.*\*\//g, '') // Remove single-line comments .replace(/\s+/g, ' ') // Collapse whitespace .replace(/\s*([{}:;,>])\s*/g, '$1') // Remove spaces around brackets .replace(/\s*\n\s*/g, '\n') // Remove empty lines .replace(/\n/g, '') // Remove all newlines .trim(); } async function minifyAll() { // Minify JS files for (const file of jsFiles) { try { const content = fs.readFileSync(file, 'utf8'); const result = await minifyJs(content, { compress: { drop_console: false, keep_fnames: false, passes: 2 }, mangle: true, format: { beautify: false, comments: false } }); const outputPath = file.replace('.js', '.min.js'); fs.writeFileSync(outputPath, result.code); console.log(`Minified: ${file} -> ${outputPath}`); } catch (error) { console.error(`Error minifying ${file}:`, error); } } // Minify CSS files const cssFiles = [ 'css/shared.css', 'css/variables.css' ]; for (const file of cssFiles) { try { const content = fs.readFileSync(file, 'utf8'); const minified = minifyCss(content); const outputPath = file.replace('.css', '.min.css'); fs.writeFileSync(outputPath, minified); console.log(`Minified: ${file} -> ${outputPath}`); } catch (error) { console.error(`Error minifying ${file}:`, error); } } } minifyAll().catch(console.error);