const fs = require('fs'); const path = require('path'); const UglifyJS = require('uglify-js'); const CleanCSS = require('clean-css'); console.log('Starting build process...'); const staticDir = path.join(__dirname, 'static'); const files = fs.readdirSync(staticDir); files.forEach(item => { const fullPath = path.join(staticDir, item); let destPath; if (item.endsWith('.css') && !item.endsWith('.min.css')) { destPath = path.join(staticDir, item.replace('.css', '.min.css')); try { const source = fs.readFileSync(fullPath, 'utf8'); const result = new CleanCSS().minify(source); fs.writeFileSync(destPath, result.styles, 'utf8'); console.log(`Compressed CSS: ${item} -> ${path.basename(destPath)}`); } catch (err) { console.error(`Error compressing ${item}:`, err); } } else if (item.endsWith('.js') && !item.endsWith('.min.js')) { destPath = path.join(staticDir, item.replace('.js', '.min.js')); try { const source = fs.readFileSync(fullPath, 'utf8'); const result = UglifyJS.minify(source); if (result.error) { throw result.error; } fs.writeFileSync(destPath, result.code, 'utf8'); console.log(`Compressed JS: ${item} -> ${path.basename(destPath)}`); } catch (err) { console.error(`Error compressing ${item}:`, err); } } }); console.log('Build process finished.');