uglify-es和uglify-js(只壓縮js)不依賴webpack


webpack配置里面拆出來單獨使用uglify-es和uglify-js

因為別人寫的代碼會有很多全局的變量,所以不能用webpack打包,webpack打包會把全局的變量變成局部變量。所以我用uglify-es和uglify-js對項目的js進行壓縮。

命令行

shell腳本

uglifyjs example.js -c -m -o dist/example.min.js

 http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html

 

uglify-es

https://github.com/mishoo/UglifyJS2

 配置寫在 

config/index.js 文件夾里面
執行的是 node 命令
var UglifyJS = require("uglify-es");
var fs =require("fs");

var code = {
    "file1.js": "function add(first, second) { return first + second; }",
    "file2.js": "console.log(add(1 + 2, 3 + 4));"
};

var options = {
    mangle: {
        toplevel: false, //不修改全局的變量名
    },
    nameCache: {}
};

for(var codeI in code){
    var true_code = code[codeI];
    var result = UglifyJS.minify(true_code, options);
    fs.writeFile('./dist/'+codeI, result.code,  function(err) {
        
    });
}

 

package.json里面寫

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node config/index.js"
  },

 

npm run start可以執行壓縮並且生成文件

 

優化輸入,自動讀取輸入文件

var UglifyJS = require("uglify-es");
var fs = require("fs");

var conFig = {
    enterFile: 'files/',
    outFile: './dist'
}


deleteDist();

var code = {}
fs.readdirSync('files').map((file) => {
    console.log(file);
    var content = fs.readFile(conFig.enterFile+file,'utf-8', function (err,data) { 
        code = {};
        code[file] = data;
        Uglify(code)
     });
});

function deleteDist(){
    fs.readdirSync(conFig.outFile).map((file) => {
        fs.unlink(conFig.outFile+`/${file}`,(err) => {
          if (err) {
            console.log(err);
          } else {
            console.log('delete ok');
          }
        });
      });
}

function Uglify(code) {
    var options = {
        mangle: {
            toplevel: true,
        },
        nameCache: {}
    };
    for(var codeI in code){
        var true_code = code[codeI];
        var result = UglifyJS.minify(true_code, options);
        fs.writeFile(conFig.outFile+'/'+codeI, result.code,  function(err) {
    
        });
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM