2024 Clojure状态调查!中分享您的看法。

欢迎!有关如何使用此功能的更多信息,请参阅关于页面。

0
ClojureScript

Google Closure现在(至少从命令行来看)包含了全面的源映射合并和内联源映射生成支持。我们应该调查这项功能实际上可重用性如何。

4 答案

0

评论由:darwin 制作

调查了一点点,分享一下我所了解到的

  1. 历史上有过隐藏标志--source_map_input,可以用来生成支持源映射的错误报告,而不是像名字所暗示的源映射组合(链接:1)
  2. 截至2016年中,一个补丁落地(链接:2),增强了这一功能以支持完整的源映射组合
  3. 截至2016年底,该功能似乎已公开并且默认在命令行工具中启用(链接:3)(链接:5)
  4. 到今天为止,官方源映射维基页面(链接:4)尚未更新以反映最新发展

(链接:1) https://github.com/google/closure-compiler/issues/1360#issuecomment-170716968
(链接:2) https://github.com/google/closure-compiler/pull/1971
(链接:3) https://github.com/google/closure-compiler/pull/2008
(链接:4) https://github.com/google/closure-compiler/wiki/Source-Maps
(链接:5) https://github.com/google/closure-compiler/pull/2129

0

评论由:darwin 制作

闭包编译器也新支持了在输入的JavaScript文件中使用数据URL嵌入的源映射(链接:1)。

  1. 默认情况下,如果未传递\-\-parse_inline_source_maps=false,则启用解析内联源映射,它不依赖于\-\-source_map_input标志
  2. \-\-source_map_input和内联源映射的信息合并,内联映射覆盖\-\-source_map_input,如果有多个sourceMappingURL=data:存在,则最后的内联映射胜出

(链接:1) https://github.com/google/closure-compiler/pull/1982
(链接:2) https://github.com/google/closure-compiler/pull/1982#issuecomment-243249065

0

评论人:thheller

FWIW,我之前就为shadow构建添加了这种支持。它不需要内联源映射就能工作。

代码可以在这里找到: https://github.com/thheller/shadow-build/blob/master/src/main/shadow/cljs/closure.clj

相关的部分是{{.addInputSourceMap}}在{{Compiler}}上和{{.setApplyInputSourceMaps}}在{{CompilerOptions}}上。

如果一切配置正常, Closure 显示的警告将包含一个“原始位置:”的链接,该链接指向 CLJS 文件。

Closure还会在生成{{:advanced}}构建的源映射时使用输入源映射,因此目前CLJS手动合并变得不再必要。源映射似乎也更准确。在输入源映射之前,我遇到了一些问题,源映射偏离了几行,但这可能是由于我在shadow-build中的源映射处理不当。

0
参考资料:https://clojure.atlassian.net/browse/CLJS-1901(由dnolen报告)
...