Scala.jsつかってると最終的なファイルサイズが気になることがある。
fullOptJS in Compile := {
val value = (fullOptJS in Compile).value
streams.value.log.info(s"fileSize: ${value.data.length() / 1024.0} KB")
value
}
調査メモ
fullOptJS は TaskKeyで Compile / fullOptKeyによって提供されてる
返す値の型は sbt.internal.util.Attributed[java.io.File]である。
そこからファイルサイズを取得してログにながしている。
sbtのinspectで確認
sbt> inspect fullOptJS
(抜粋)
Task: sbt.internal.util.Attributed[java.io.File]
Provided by:
[Project] / Compile / fullOptJS
- タスク自体はこの辺で動的に定義されてる。
https://github.com/scala-js/scala-js/blob/v0.6.26/sbt-plugin/src/main/scala/org/scalajs/sbtplugin/ScalaJSPluginInternal.scala#L293 - 呼び出しもとはここ stageKeysの中身を確認すればよさそう。
https://github.com/scala-js/scala-js/blob/v0.6.26/sbt-plugin/src/main/scala/org/scalajs/sbtplugin/ScalaJSPluginInternal.scala#L463 - stageKeysの中身はScalaJS.stageKeys https://github.com/scala-js/scala-js/blob/v0.6.26/sbt-plugin/src/main/scala/org/scalajs/sbtplugin/ScalaJSPluginInternal.scala#L166-L167
- ScalaJS.stageKeysの中身 https://github.com/scala-js/scala-js/blob/v0.6.26/sbt-plugin/src/main/scala/org/scalajs/sbtplugin/ScalaJSPlugin.scala#L524-L527