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 :)

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top