首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uglifyjs节点js

Uglifyjs节点js
EN

Stack Overflow用户
提问于 2019-03-07 22:52:18
回答 1查看 75关注 0票数 1

这是我写的代码,用来将目录中的所有js文件都压缩:

代码语言:javascript
复制
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中有两个包含内容的文件:

代码语言:javascript
复制
 var a=10;var b=20;
 var name="stack"; 

我得到的是包含文件内容的单文件a.min.js

代码语言:javascript
复制
var a=10tack; 

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2019-03-07 22:57:47

您需要首先收集所有文件内容,合并它们,然后对它们运行UglifyJS.minify,才能将其保存为单个文件。

类似这样的东西(未完全测试)

代码语言:javascript
复制
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();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55046666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档