使用uglifyjs对静态引入的js文件进行压缩

发布于:2025-04-12 ⋅ 阅读:(34) ⋅ 点赞:(0)

前言

  • 因为有时候js文件没有npm包,或者需要修改,只能引入静态的js,那么这个时候就可以对js进行压缩了。
  • 我其实想通过vite、webpack等插件进行压缩的,可是他都不能定位到public目录下面的文件,所以我只能自己压缩了。
  • 编写下面的脚本可以放在vite、webpack配置文件中,但是不想这样操作,就是有没有这样的插件。欢迎评论推荐。

安装uglifyjs依赖

  • 我是直接手动,所以选择全局安装的方式。
npm install uglifyjs -g
  • 单个文件压缩
uglifyjs file.js -o out.js
  • 多个文件的压缩
    • 暂时没有找到命令,自己写了一个脚本
// index.js
const fs = require('fs');
const path = require('path');
const { exec } = require('child_process');

function getJSFiles(dir) {
    const files = [];
    function traverseDirectory(currentDir) {
        const entries = fs.readdirSync(currentDir, { withFileTypes: true });
        for (const entry of entries) {
            const entryPath = path.join(currentDir, entry.name);
            if (entry.isDirectory()) {
                traverseDirectory(entryPath);
            } else if (path.extname(entry.name) === '.js') {
                files.push(entryPath);
            }
        }
    }
    traverseDirectory(dir);
    return files;
}
function compressFile(file) {
    exec(`uglifyjs ${file} -o ${file}`, (error, stdout, stderr) => {
        if (error) {
            console.error(`执行命令时出错: ${error.message}`);
            return;
        }
        if (stderr) {
            console.error(`命令执行时出现错误: ${stderr}`);
            return;
        }
        console.log(`文件压缩成功: ${file}`);
    });
}
// 目录、可根据需要修改目录路径
const directoryPath = 'c:\\x\\x\\x'; 
const jsFiles = getJSFiles(directoryPath);
console.log(jsFiles);

for (const file of jsFiles) {
    compressFile(file);
}
  • 执行命令
# 修改成自己的文件名称
node index.js

效果

效果

  • 压缩率为1-(5.68/9.63)≈41.02%