2024年Clojure调查问卷!分享您的想法。

欢迎!请查阅关于页面以获取更多操作信息。

0
ClojureScript

Google Closure现在已包含对源映射合并(至少从命令行来说)和内联源映射生成的全面支持。我们应该研究这一功能的复用性如何。

4个答案

0

评论者:darwin

调研了一点,分享一下目前已学到的内容

  1. 在历史上,曾经有一个隐藏的标志--source_map_input,可以用来生成源映射感知的错误报告,而非如名称所示是源映射组合(链接:1)
  2. 2016年中旬,有一个补丁落地(链接:2),增强了这一功能以实现完整的源映射组合
  3. 到2016年底,该功能似乎已经公开且默认在命令行工具中启用(链接:3)(链接:5)
  4. 时至今日,官方源映射wiki页面(链接: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

Closure编译器还新支持使用数据URL在输入JavaScript文件中理解内联源映射(链接:1)。

  1. 默认情况下启用内联源映射的解析,除非传递了 \-\-parse_inline_source_maps=false,它独立于 \-\-source_map_input 标志
  2. \-\-source_map_input 和内联源映射的信息合并,内联映射覆盖 \-\-source_map_input,如果有多个以下情况,则最后一个内联映射生效 (link: 2)

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

0

评论者:thheller

FWIW,我在 shadow-build 中为此增加了支持。它不需要内联源映射即可工作。

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

相关部分是在 Compiler 上的 addInputSourceMap 和在 CompilerOptions 上的 setApplyInputSourceMaps

如果一切配置得当,Closure 显示的警告将包含一个“原来位置:”的位置,该位置指向 CLJS 文件。

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

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