代码之家  ›  专栏  ›  技术社区  ›  Gerald

Browserify+Minifyify,带有非缩小的源地图

  •  2
  • Gerald  · 技术社区  · 10 年前

    所以我使用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 回复  |  直到 9 年前
        1
  •  3
  •   Gerald    10 年前

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

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

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

        2
  •  1
  •   generalhenry    10 年前

    我只在cli中使用过。

    但看一下文档,问题就出在最后一行。

    尝试:

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

    此外,您不需要debug:true

        3
  •  0
  •   hedgepigdaniel    10 年前

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

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