我花了很多时间试图解决一个接一个的问题。我最终遇到了无限循环转换的问题。我觉得我接近解决方案,但我有一些缺失的块。
当我运行activator时,转换器会生成新的main.js,系统会检测到新的更改。所以它运行另一个变化。它无止境地一次又一次地发生。
这是我的build.sbt:
name := """angular-seed-play-java"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean, SbtWeb)
JsEngineKeys.engineType := JsEngineKeys.EngineType.Node
scalaVersion := "2.10.5"
libraryDependencies ++= Seq(
"mysql" % "mysql-connector-java" % "6.0.3",
"org.webjars" % "angularjs" % "1.3.0-beta.2",
"org.webjars.npm" % "systemjs" % "0.19.36",
"org.webjars" % "jquery" % "3.1.0"
)
routesGenerator := InjectedRoutesGenerator
val browserifyOutputDir = settingKey[File]("Browserify output directory")
browserifyOutputDir := baseDirectory.value / "public" / "js"
excludeFilter in (Assets, JshintKeys.jshint) := "*.js"
sourceGenerators in Assets += task[Seq[File]] {
val outputFile = browserifyOutputDir.value / "main.js"
"browserify -t [ babelify --presets [ latest ] ] " + baseDirectory.value + "/public/js/main.jsx -o "+outputFile.getPath !;
List(outputFile)
}
pipelineStages := Seq(rjs, digest, gzip)
我添加了
excludeFilter in (Assets, JshintKeys.jshint) := "*.js"
行以防止默认的transpiler runnning。也没有它我又收到了另一个错误。
这是我的项目/ plugins.sbt
中的一行addSbtPlugin("io.teamscala.sbt" % "sbt-babeljs" % "1.0.3")
老实说,我已经阅读了一半的书,但钢铁对这个工具感到不舒服。
答案 0 :(得分:0)
从阅读SBT文件看起来您的输入和输出使用相同的目录。我怀疑这个目录在sourceDirectories
。通过更新该目录中的文件,它将任务标记为脏,并按照您的说法进行操作 - 无限地重建它。
典型的sbt版本将源文件和生成的文件分开。在纯scala世界中,生成的源通常在sourceManaged
下进入target/
。
如果我发现更多内容,我会更新此答案。