CoolFace
Apppublic

devin15/cursor2api-rust

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
minify.js81 linesDownload Raw Back to scripts
1#!/usr/bin/env node2 3const { minify: minifyHtml } = require('html-minifier-terser');4const { minify: minifyJs } = require('terser');5const CleanCSS = require('clean-css');6const fs = require('fs');7const path = require('path');8 9// 配置选项10const options = {11  collapseWhitespace: true,12  removeComments: true,13  removeEmptyAttributes: true,14  removeOptionalTags: true,15  removeRedundantAttributes: true,16  removeScriptTypeAttributes: true,17  removeStyleLinkTypeAttributes: true,18  minifyCSS: true,19  minifyJS: true,20  processScripts: ['application/json'],21};22 23// CSS 压缩选项24const cssOptions = {25  level: 226};27 28// 处理文件29async function minifyFile(inputPath, outputPath) {30  try {31    const ext = path.extname(inputPath).toLowerCase();32    const content = fs.readFileSync(inputPath, 'utf8');33    let minified;34 35    switch (ext) {36      case '.html':37        minified = await minifyHtml(content, options);38        break;39      case '.js':40        const result = await minifyJs(content);41        minified = result.code;42        break;43      case '.css':44        minified = new CleanCSS(cssOptions).minify(content).styles;45        break;46      default:47        throw new Error(`Unsupported file type: ${ext}`);48    }49 50    fs.writeFileSync(outputPath, minified);51    console.log(`✓ Minified ${path.basename(inputPath)} -> ${path.basename(outputPath)}`);52  } catch (err) {53    console.error(`✗ Error processing ${inputPath}:`, err);54    process.exit(1);55  }56}57 58// 主函数59async function main() {60  // 获取命令行参数,跳过前两个参数(node和脚本路径)61  const files = process.argv.slice(2);62 63  if (files.length === 0) {64    console.error('No input files specified');65    process.exit(1);66  }67 68  const staticDir = path.join(__dirname, '..', 'static');69 70  for (const file of files) {71    const inputPath = path.join(staticDir, file);72    const ext = path.extname(file);73    const outputPath = path.join(74      staticDir,75      file.replace(ext, `.min${ext}`)76    );77    await minifyFile(inputPath, outputPath);78  }79}80 81main();