请在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 编译器现在也支持使用 data URLs 在输入 JavaScript 文件中使用内联源码映射(链接:1)。

  1. 默认情况下启用内联源码映射的解析,除非传递 \-\-parse_inline_source_maps=false,它与 \-\-source_map_input 标志无关。
  2. \-\-source_map_input 和内联源码映射的信息被合并,内联映射会覆盖 \-\-source_map_input,如果有多个存在 //1. sourceMappingURL=,则最后一个内联映射有效(链接:2)。

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

0票数

评论者:thheller

顺便提一下,我之前在 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 报告)
...