我正在使用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个捆绑文件。
答案 0 :(得分: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源。
如果要在开发中进行连接/ uglify,请使用pipelineStages in Assets
。通常它只会执行生产构建。
答案 1 :(得分:2)
我知道的一种方法是在“Assests中的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)