Files
unknownbin/build.js

41 lines
1.5 KiB
JavaScript

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.');