2

我正在使用 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
4

0 回答 0