28

我的 Web 应用程序有一个两步编译过程。首先,我将 CoffeeScript 文件编译成 JavaScript 文件 [1]。然后 JavaScript 文件(来自 CoffeeScript 的文件和外部文件,如由 AngularJS 模板生成的grunt-angular-templates文件)由 Google Closure Compiler [2] 编译成单个最小化文件。

CoffeeScript ---[1]---> JavaScript --[2]--\
                                           \->
AngularJS templates --> JavaScript ----------> single minimized JS file
                                           /->
                    other JS files -------/

步骤 [1] 和 [2] 都生成源映射。

是否可以将这些源映射组合成一个源映射,允许我从运行最小化 JS 文件的 Web 浏览器调试 CoffeeScript 文件?

换句话说:假设源映射 [1] 由一个函数表示:

f(position in CoffeeScript) = position in JavaScript

源映射 [2] 由一个函数表示:

g(position in JavaScript) = position in minimized JS

我想得到一个由函数组合表示的源映射:

h(position in CoffeeScript) = g(f(position in CoffeeScript)) = 
                            = position in minimized JS
4

4 回答 4

21

试试巫术——它就是为这个目的而设计的(我是作者,我来这里是为了寻找相关工具的信息)。只要.map文件位于正确的位置(或作为数据 URI 内联),您只需sorcery在生成的文件上运行,它就会找到中间源映射并组合它们。

于 2015-05-05T20:20:57.290 回答
3

从源映射规范(和其他讨论)中我可以看出,多级映射尚未定义

https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#heading=h.e8hx254xu4sa

源地图修订版 3;多级映射说明

有人可能已经开发了一些工具来解决这个问题,也许在 Github 存储库中。当然,您拥有生成此类地图的工具和可以使用它们的浏览器。

https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/ https://github.com/fitzgen/source-map

于 2014-02-11T23:03:09.787 回答
3

Closure Compiler 现在实现--apply_input_source_maps(并--parse_inline_source_maps启动)。这应该完全符合您在这里想要实现的目标,不需要额外的工具。

于 2016-09-20T05:46:37.323 回答
2
于 2017-09-08T04:47:49.840 回答