【问题标题】:Browserify + Minifyify with non-minified source mapsBrowserify + Minifyify 与非缩小源地图
【发布时间】:2014-08-11 17:06:07
【问题描述】:

所以我使用 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));

【问题讨论】:

    标签: javascript node.js minify browserify


    【解决方案1】:

    所以我发现了问题所在。这是 Windows 上 Minifyify 中与不同路径分隔符相关的错误。一个快速的解决方法是编辑 minifier.js 文件并将这一行添加到 Minifier.prototype.transformer 的顶部:

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

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

    【讨论】:

      【解决方案2】:

      我只用过 cli。

      但是查看文档,您的最后一行似乎是问题所在。

      尝试:

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

      你也不需要调试:true

      【讨论】:

      • 这给了我与使用 pipe() 相同的输出。另外仅供参考,如果我没有设置 debug: true,minifyify 会抛出异常“在调试模式下运行 browserify 以使用 minifyify。”使用 CLI 时,您是否获得了正确的非缩小源映射?我觉得我之前尝试过并且得到了相同的输出,但我也会再试一次。
      • 我正在使用browserify -e client.js -p [minifyify --map /bundle.map.json --output public/bundle.map.json] -o public/bundle.js 就像一个魅力
      • 嗯,我尝试了相同的命令行。首先它不起作用,因为它抱怨我需要在调试模式下运行 browserify,当我这样做时,它给了我基本相同的输出,在浏览器中具有相同的结果。地图文件在文件的开头列出了所有正确的绝对路径,但它似乎也嵌入了所有在浏览器中解析的缩小代码。您介意告诉我您使用的是什么版本的 browserify 和 minifyify 吗?
      • "browserify": "^4.2.3", "minifyify": "^3.0.12", 节点 v0.10.29
      • 谢谢。我正在使用 browserify 的 v.5.9.1 和 minifyify 的 v4.0.3。我去看看我能不能得到你正在使用的版本,看看它是否有所作为。
      【解决方案3】:

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

      我能看到的最简单的解决方法是使用 6.0.0 之前的最后一个版本的 browserify,直到更正 minifyify(和 uglify)以解决此更改。

      【讨论】:

      • 这现在可能是也可能不是问题,但它与我遇到的问题无关,这是一个缩小化不规范化路径分隔符的问题,这些路径在关联数组,导致 Windows 上 browserify 路径的匹配失败。在我发布这个问题几天后,它被修复了。
      猜你喜欢
      • 2016-06-12
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多