我正在编写一个sbt插件,该插件从特定的StaticAnnotation类型创建JS文件;与其包含类路径上的所有注释,我更希望只在实际由fastOptJS / fullOptJS链接的类上发出注释。为此,我可以利用Scala.js链接器工具或sbt插件吗?
发布于 2016-05-31 13:12:26
可以,停那儿吧。Scala.js Tools API (链接器工具)提供了一个名为Analysis的数据类型,它包含您所需的一切。
您可以使用Analysis构造Analyzer.computeReachability。您必须为类路径上的ClassInfo文件提供适当的.sjsir。
这是在调用图sbt插件中完成的,虽然还在开发中,但它展示了如何为sbt项目构建Analysis:https://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为false的成员。同样,根据您的情况,您希望使用更精细的测试,例如.isAnySubclassInstantiated。
https://stackoverflow.com/questions/37546187
复制相似问题