Scala.js 类 列表实际上链接到 fastOpt.js/ fullOpt.js?
List of Scala.js classes actually linked into fastOpt.js/ fullOpt.js?
我正在编写一个 sbt 插件,它根据特定的 StaticAnnotation 类型创建一个 JS 文件;我宁愿只在 类 上发出实际上由 fastOptJS / fullOptJS 链接的注释,而不是包括在类路径上找到的所有注释。为此,我可以利用 Scala.js 链接器工具或 sbt 插件吗?
是的,你可以。 Scala.js 工具 API(linker 工具)提供了一种名为 Analysis
的数据类型,其中包含您需要的一切。
您可以为类路径上的 .sjsir 文件构建一个 Analysis
和 Analyzer.computeReachability
. You have to give it the appropriate ClassInfo
。
这已在 the callgraph sbt plugin 中完成,尽管仍在开发中,但展示了如何为 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
after 优化已执行(除非程序不 link,在这种情况下它回退到在执行 优化之前分析 )。根据您的用例,您可能更喜欢其中一个,但您更有可能想要 after optimizations.
版本
一旦你有了一个 Analysis
,你可以简单地列出它的 classInfo
成员,并过滤掉那些 .isNeededAtAll
为假的成员。同样,根据您的情况,您希望使用更精细的测试,例如 .isAnySubclassInstantiated
.
我正在编写一个 sbt 插件,它根据特定的 StaticAnnotation 类型创建一个 JS 文件;我宁愿只在 类 上发出实际上由 fastOptJS / fullOptJS 链接的注释,而不是包括在类路径上找到的所有注释。为此,我可以利用 Scala.js 链接器工具或 sbt 插件吗?
是的,你可以。 Scala.js 工具 API(linker 工具)提供了一种名为 Analysis
的数据类型,其中包含您需要的一切。
您可以为类路径上的 .sjsir 文件构建一个 Analysis
和 Analyzer.computeReachability
. You have to give it the appropriate ClassInfo
。
这已在 the callgraph sbt plugin 中完成,尽管仍在开发中,但展示了如何为 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
after 优化已执行(除非程序不 link,在这种情况下它回退到在执行 优化之前分析 )。根据您的用例,您可能更喜欢其中一个,但您更有可能想要 after optimizations.
一旦你有了一个 Analysis
,你可以简单地列出它的 classInfo
成员,并过滤掉那些 .isNeededAtAll
为假的成员。同样,根据您的情况,您希望使用更精细的测试,例如 .isAnySubclassInstantiated
.