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

欢迎!请查看关于页面以了解该功能的工作方式。

0 投票
ClojureScript

Google Closure现在(至少从命令行输入)包含了对源映射合并和内联源映射生成的全面支持。我们应该调查这一功能的可重用性。

4 个回答

0 投票

评论由:darwin 提出

调查了一点点,分享我所学到的东西

  1. 史上曾经有一个隐藏的标记 --source_map_input,可以用来自动生成源映射感知的错误报告,而不是源映射组合,正如名称所示(链接:1)
  2. 2016年上半年,一个补丁被 landed(链接: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 提出

Closure编译器也能够理解使用输入JavaScript文件中的data URL的内联源映射(链接:1)。

  1. 默认情况下启用了内联源映射解析,除非传递了\-\-parse_inline_source_maps=false,它与\-\-source_map_input标志无关。
  2. 合并了来自\-\-source_map_input和内联源映射的信息,内联映射覆盖\-\-source_map_input,如果有多个sourceMappingURL=data存在,则最后一个内联映射生效(链接: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报告)
...