gpt4 book ai didi

node.js - Uglifyjs Node js

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:20 24 4
gpt4 key购买 nike

这是我编写的代码,用于获取要缩小的目录中的所有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.jsb.js ,其内容为:

 var a=10;var b=20;
var name="stack";

我得到的是单个文件a.min.js,其文件内容:

var a=10tack; 

请帮忙。

最佳答案

您需要首先收集所有文件内容,将它们连接起来,然后对它们运行 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();

关于node.js - Uglifyjs Node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55046666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com