使用非缩小的源映射进行Browserify + Minifyify

时间:2014-08-11 17:06:07

标签: javascript node.js minify browserify

所以我正在使用Browserify和Minifyify捆绑一些JS源代码,并生成源地图。

Minifyify声明指向原始源文件,但是当我查看Chrome中的源地图时,我看到的是原始文件的缩小版本。控制台错误中的任何堆栈跟踪始终显示第1行,因为所有代码都在一行中。

这是Minifyify的预期行为,如果没有,我还需要做些什么才能获得原始来源的源地图吗?

我的设置如下:

var hbsfy = require("hbsfy").configure({
  extensions: ["html"]
});

var fs = require('fs');

var opts = { debug: true };

var browserify = require("browserify");

var scriptFile = './app.js';
var outputFile = './build/app.min.js';
var mapFile = 'app.min.map';
var mapOutput = './build/app.min.map';


var b = new browserify(opts);
b.add(scriptFile);
b.transform(hbsfy);
b.plugin('minifyify', { map: mapFile, output: mapOutput });
b.bundle().pipe(fs.createWriteStream(outputFile));

3 个答案:

答案 0 :(得分:3)

所以我想出了问题所在。这是Windows上Minifyify中与不同路径分隔符相关的错误。快速修复是编辑minifier.js文件并将此行添加到Minifier.prototype.transformer的顶部:

file = file.replace(new RegExp('\\' + path.sep, 'g'), '/');

为了将来参考,此错误发生在v4.0.3中,很可能是以前的所有版本。我将信息提交给作者,希望它将在下一个版本中修复。

答案 1 :(得分:1)

我只和cli一起使用过。

但是看看文档,看起来你的最后一行就是问题。

尝试:

b.bundle(function (err, src, map) {
  if (err) {
    throw err;
  }
  fs.writeFile(outputFile, src);
  fs.writeFile(mapOutput, map);
});

此外,您不需要debug:true

答案 2 :(得分:0)

这就是问题所在:https://github.com/substack/node-browserify/commit/dddc29673186c1dfe3f99d2af5bef02c51df12f0

我能看到的最简单的解决方法是在6.0.0之前使用最新版本的browserify,直到minifyify(和uglifyify)被更正以解释此更改。