@seaavey/bot
Version:
The Library for Seaavey Bot
55 lines (54 loc) ⢠2.5 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = minifyJS;
const globby_1 = require("globby");
const uglify_js_1 = __importDefault(require("uglify-js"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const chalk_1 = __importDefault(require("chalk"));
const Defaults_1 = require("../Defaults");
async function minifyJS(config) {
var _a;
try {
const pattern = path_1.default.join((0, Defaults_1.HOMEDIR)(), 'dist', (_a = config.only) !== null && _a !== void 0 ? _a : '**/*.js');
const jsFiles = await (0, globby_1.globby)(pattern, {
absolute: true,
onlyFiles: true,
ignore: config.exclude ? [config.exclude] : [],
});
if (jsFiles.length === 0) {
console.log(chalk_1.default.yellow('ā ļø No JavaScript files found to minify.'));
return;
}
console.log(chalk_1.default.cyan(`š Found ${jsFiles.length} JavaScript files to minify...\n`));
for (const file of jsFiles) {
try {
const code = await fs_extra_1.default.readFile(file, 'utf8');
const result = uglify_js_1.default.minify(code, {
compress: config.state === 'production',
mangle: config.state === 'production',
});
if (result.error) {
console.error(chalk_1.default.red(`ā Error minifying ${file}:\n`), result.error);
continue;
}
if (!result.code || result.code.trim() === '') {
console.warn(chalk_1.default.yellow(`ā ļø Minified result for ${file} is empty. Skipping write.`));
continue;
}
await fs_extra_1.default.writeFile(file, result.code);
console.log(chalk_1.default.green(`ā
Minified: ${file}`));
}
catch (fileError) {
console.error(chalk_1.default.red(`ā Error processing ${file}:\n`), fileError);
}
}
console.log(chalk_1.default.greenBright('\nš Minification completed.'));
}
catch (error) {
console.error(chalk_1.default.redBright('š„ Unexpected error during minification:'), error);
}
}