如何缩小sbt-concat生成的js



我正在使用sbt-concat组合css/js捆绑包进行实验。然后我尝试扩展我的管道,以便为我的css和js做minimy。使用sbt-css压缩相当容易,它可以缩小sbt-concat生成的所有css。我尝试过js的sbt闭包,但似乎不起作用。需要明确的是,我尝试了sbt闭包,并确认它将下面的所有js编译为/assets。然而,我正试图弄清楚它是否适用于sbt-concat。

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

您可以使用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。通常情况下,它只会针对生产构建执行。

我知道的一种方法是在"资产中的pipelineStages"中进行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)

最新更新