2

我正在使用 sbt-concat 来组合 css/js 包进行实验。然后我尝试扩展我的管道以便为我的 css 和 js 做缩小。使用 sbt-css-compress 非常容易,它可以缩小 sbt-concat 生成的所有 CSS。我为 js 尝试了 sbt-closure,但它似乎不起作用。为了清楚起见,我尝试了 sbt-closure 并确认它确实将下面的所有 js 编译到 /assets。但是我想弄清楚它是否适用于 sbt-concat。

例如:如果我有 /assets/js/f1.js 和 /assets/js/f2.js 并且我想将它们组合并缩小为 1 个捆绑文件。

4

2 回答 2

5

您可以使用 sbt-uglify 来合并和缩小。

添加到plugins.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3")

添加到build.sbt

pipelineStages := Seq(uglify)

UglifyKeys.uglifyOps := { js =>
  Seq((js.sortBy(_._2), "main.min.js"))
}

这将按文件路径的字母顺序组合您的 javascript 源。

pipelineStages in Assets如果您想在开发中连接/丑化,请使用。通常它只会在生产构建中执行。

于 2014-11-02T03:21:16.173 回答
2

我知道的一种方法是在 'pipelineStages in Assests' 中进行 concat 并包含一个过滤器

例如在build.sbt

Concat.groups := Seq(
  "all.js" -> group(Seq(
    "js/f1.js",
    "js/f2.js"
  ))
)

Concat.parentDir := "concated"

Closure.suffix := ".min.js"

Closure.flags := Seq("--formatting=PRETTY_PRINT", "--accept_const_keyword")

pipelineStages in Assets := Seq(concat)

includeFilter in closure := "all.js"

pipelineStages := Seq(closure, digest, gzip)
于 2014-10-09T15:46:12.543 回答