所以我正在使用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));
答案 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)被更正以解释此更改。