Cómo hacer scalatra compilar tarea dependen de scala.js packageJS tarea en sbt?
Pregunta
Tengo un scalatra proyecto en el que quiero servir de JavaScript que se ha generado a partir de una scala.js proyecto.
Tengo un multi-proyecto sbt construir que me permite construir estos proyectos con éxito.Es decir, puedo usar la compilación (y ejecutar) tareas en el scalatra proyecto;y puedo usar el packageJS tarea en el scala.js proyecto.
Sin embargo, me gustaría mucho que ser capaz de tener la scalatra compilar tarea dependerá de la scala.js packageJS tarea;así que cuando el Scalatra se compila el proyecto, el código Javascript se genera automáticamente en la Scala.js proyecto.
En mi multi-proyecto de construir.sbt archivo que he intentado:
lazy val wwwjs = project // Scala.js project
lazy val www = project // Scalatra project
.dependsOn(wwwjs % "compile->packageJS")
Pero al momento de compilar el Scalatra proyecto de esta falla con "la configuración no se encuentra en wwwjs#wwwjs_2.10;0.1:'packageJS'.Se requiere de www#www_2.10;0.1 compilar".
Soy bastante nuevo en sbt (y Scalatra y Scala.js!) - ¿alguien puede aclararme cuanto a cómo hacer esto?
Gracias :)
Solución
Lo que usted quiere aquí no es una dependencia entre proyectos (que es lo que dependsOn
en un proyecto lo hace), pero entre tasks
.
Yo no estoy familiarizado con Scalatra, pero para el sbt lado debe ser muy similar a Jugar, y tenemos un éxito plantilla para Jugar proyectos con Scala.js aquí:https://github.com/vmunier/play-with-scalajs-example/blob/master/project/Build.scala
En particular, me derivan las siguientes básico de la adaptación de la construcción de la imagen de arriba:
import scala.scalajs.sbtplugin.ScalaJSPlugin._ // if Build.scala
import ScalaJSKeys._
lazy val wwwjs = project // Scala.js project
lazy val www = project // Scalatra project
.settings(
compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (wwwjs, Compile))
)
Como alternativa, utilice fullOptJS
en lugar de fastOptJS
para la totalidad versión optimizada (pero que tarda varios segundos para reconstruir cada vez que realice un cambio).