实际链接到fastOpt.js / fullOpt.js的Scala.js类列表?

时间:2016-05-31 12:47:13

标签: scala.js

我正在编写一个sbt插件,它从特定的StaticAnnotation类型创建一个JS文件;而不是包括在类路径中找到的所有注释,我宁愿只在由fastOptJS / fullOptJS实际链接的类上发出注释。我可以利用Scala.js链接器工具或sbt插件吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以。 Scala.js工具API(链接器工具)提供了一种名为Analysis的数据类型,其中包含您需要的所有内容。

您可以使用Analyzer.computeReachability构建Analysis。您必须为类路径上的.sjsir文件提供适当的ClassInfo

这已在the callgraph sbt plugin中完成,虽然仍处于开发阶段,但它展示了如何为sbt项目构建Analysishttps://github.com/lionelfleury/scala-js-call-graph/blob/065506bf9a9c12ccc54fed056fed878e6f18b328/sbt-scalajs-callgraph/src/main/scala/ch/epfl/sbtplugin/CallGraphPlugin.scala#L28-L49

此特定实现在执行优化后选择Analysis (除非程序未链接,在这种情况下,它会回退到之前的分析执行优化)。根据您的使用情况,您可能更喜欢其中一种,但您更有可能希望在优化之后使用版本。

获得Analysis后,您只需列出其classInfo成员,并过滤掉.isNeededAtAll为假的成员。同样,根据您的情况,您希望使用更精确的测试,例如.isAnySubclassInstantiated