我正在使用 sbt-web,我只想将 js 文件 uglify 用于生产(在开发时节省编译时间)。但是,当我运行时:
sbt prod:run
我得到相同的结果
sbt run
也就是说,prod:run
似乎没有拾取pipelineStages in prod
下面的范围设置。
我确定我误解了这一切是如何运作的,并希望有一些清晰和正确的用法。我已经阅读了http://www.scala-sbt.org/0.13/tutorial/Scopes.html以及关于 SO 的所有类似帖子,但灯泡还没有打开。如果有更好的方法,我很好,但是因为我处于学习模式,我仍然想知道为什么这不起作用的原因。
这是完整的 ./build.sbt 文件:
organization := "com.test123.spray"
version := "0.1"
scalaVersion := "2.11.6"
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")
libraryDependencies ++= {
val akkaV = "2.3.9"
val sprayV = "1.3.3"
Seq(
"io.spray" %% "spray-can" % sprayV,
"io.spray" %% "spray-routing" % sprayV,
"io.spray" %% "spray-testkit" % sprayV % "test",
"com.typesafe.akka" %% "akka-actor" % akkaV,
"com.typesafe.akka" %% "akka-testkit" % akkaV % "test",
// client side dependencies
"org.webjars" % "jquery" % "2.1.4",
"org.webjars" % "uikit" % "2.24.2"
)
}
// sbt-web pipeline for combining, minifying, etc... client-side files
// see plugins.sbt for sbt dependencies that provide this capability.
lazy val root = (project.in(file(".")))
.enablePlugins(SbtWeb)
.configs(prod)
lazy val prod = config("prod") extend(Compile) describedAs("Production")
Concat.groups := Seq(
"app.js" -> group(Seq("js/b.js", "javas/a.js")),
"vendors.js" -> group(Seq("lib/jquery/jquery.js", "lib/uikit/js/uikit.js"))
)
pipelineStages := Seq(concat, gzip)
// run uglify in prod only
pipelineStages in prod := Seq(concat, uglify, gzip)
(managedClasspath in Runtime) += (packageBin in Assets).value