Como fazer scalatra compilar tarefa dependem scala.js packageJS tarefa no sbt?
Pergunta
Eu tenho um scalatra projeto dentro do qual quero servir de JavaScript que foi gerado a partir de um scala.js projeto.
Eu tenho um multi-projecto sbt construir, que me permite criar ambos projetos com êxito.Isto é, eu posso usar a compilação (e executar) tarefas no scalatra projeto;e eu posso usar o packageJS tarefa no scala.js projeto.
No entanto, gostaria muito de ser capaz de ter a scalatra compilar tarefa dependem do scala.js packageJS tarefa;assim, quando o Scalatra projeto é compilado, o Javascript é gerado automaticamente na Scala.js projeto.
No meu multi-compilação do projeto.sbt arquivo que eu tentei:
lazy val wwwjs = project // Scala.js project
lazy val www = project // Scalatra project
.dependsOn(wwwjs % "compile->packageJS")
Mas quando compilar o Scalatra projeto esta falha com "configuração não encontrado em wwwjs#wwwjs_2.10;0.1:'packageJS'.Era necessário partir www#www_2.10;0.1 compilar".
Eu sou bastante novo no sbt (e Scalatra e Scala.js!) - alguém pode esclarecer-me a respeito de como fazer isso?
Obrigado :)
Solução
O que você quer aqui não é uma dependência entre projetos (que é o que dependsOn
em um projeto não), mas também entre tasks
.
Eu não estou familiarizado com Scalatra, mas para o sbt lado ele deve ser extremamente similar ao Jogo, e temos um bem-sucedido modelo para Jogar projetos com Scala.js aqui:https://github.com/vmunier/play-with-scalajs-example/blob/master/project/Build.scala
Em particular, eu derivar o seguinte básico de adaptação da sua compilação acima:
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))
)
Em alternativa, usar fullOptJS
em vez de fastOptJS
para a versão totalmente otimizada (mas que leva vários segundos para reconstruir a cada vez que você fizer uma alteração).