这是我写的代码,用来将目录中的所有js文件都压缩:
var http = require('http');
var testFolder = './tests/';
var UglifyJS = require("uglify-js");
var fs = require('fs');
var glob = require("glob");
var fillnam="";
hello();
function hello()
{
glob("gen/*.js", function (er, files) {
//console.log(files);
for(var i=0;i<files.length;i++)
{
fillnam=files[i];
console.log("File Name "+fillnam);
fs.readFile(fillnam, 'utf8', function (err,data)
{
if (err) {
console.log(err);
}
console.log(fillnam+" "+data);
var result = UglifyJS.minify(data);
var gtemp_file=fillnam.replace(".js","");
console.log(gtemp_file);
fs.writeFile(gtemp_file+".min.js", result.code, function(err) {
if(err) {
console.log(err);
} else {
console.log("File was successfully saved.");
}
});
});
}
});
}
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('Hello World!');
}).listen(8080);因此,应该在同一目录中形成与.min.js同名的各个缩小的js文件。
但我得到的是一个文件,所有文件的数据都被覆盖了。例如,如果目录a.js和b.js中有两个包含内容的文件:
var a=10;var b=20;
var name="stack"; 我得到的是包含文件内容的单文件a.min.js:
var a=10tack; 请帮帮忙。
发布于 2019-03-07 22:57:47
您需要首先收集所有文件内容,合并它们,然后对它们运行UglifyJS.minify,才能将其保存为单个文件。
类似这样的东西(未完全测试)
const testFolder = './tests/';
const UglifyJS = require("uglify-js");
const fs = require('fs');
const readFile = require('util').promisify(fs.readFile);
const glob = require("glob");
function hello() {
glob("gen/*.js", async(er, files) {
let data = [];
for (const file of files) {
const fileData = await readFile(file, {
encoding: 'utf-8'
});
data.push(fileData);
}
const uglified = UglifyJS.minify(data.join('\n'));
fs.writeFile('main.min.js', uglified);
});
}
hello();
https://stackoverflow.com/questions/55046666
复制相似问题