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