请注意未正确处理源地图

时间:2014-05-24 05:51:18

标签: javascript browserify watchify

我使用Browserify捆绑了我的所有Javascript资源。然而,随着应用变得越来越复杂,Browserify开始变得非常慢,所以我切换到了Watchify,很好地解决了这个问题。

然而,这引入了一个新问题。我在此期间输出源映射以进行调试,并使用Minifyify缩小输出。在第一次通过Watchify运行时,这工作正常,源映射正确映射到原始文件。但是,如果我然后修改文件,则源映射最终会指向原始文件的缩小版本而不是未分解的版本。

我假设这是因为Watchify没有接收输入源地图然后修改它,但我不确定。

这是我的代码:

var watchScripts = function() {
    var rebundle = function() {
        return bundler.bundle()
            .pipe(source('app.min.js'))
            .pipe(gulp.dest('build/scripts/'));
    };
    var bundler = watchify({
            entries: ['./app/scripts/app.js', './app/jsx/app.jsx'],
            extensions: ['.js', '.jsx']
        })
        .plugin('minifyify', {
            map: 'app.js.map',
            output: 'build/scripts/app.js.map'
        })
        .transform(reactify)
        .transform(debowerify)
        .on('update', rebundle);

    return rebundle();
};

这里出了什么问题? Watchify确实没有在第二次运行时考虑现有的源地图,还是其他什么?无论哪种方式,我如何使这个工作,以便源映射正确链接回第二次和后续运行Watchify的未分类非捆绑资产?

1 个答案:

答案 0 :(得分:2)

如果您没有关注GitHub issue Ash filed,则watchify目前不支持minifyify。

Benify,minifyify的作者说(2014年10月1日):

  

我没有使用watchify测试minifyify,也不打算支持它。 minifyify意味着用于生产,而watchify则用于开发。

记录此限制的说明has been added to the README

解决方案似乎是仅在开发中使用watchify,然后使用minifyify创建生产包以进行部署/集成。这可能会掩盖缩小本身引入的错误,但希望这些错误足够罕见,可以在CI /分期中捕获它们。