(提供的示例项目)我无法让sbt-concat按设计工作以查找和连接由预处理器任务产生的样式产生的样式表。在我的生产应用程序中,我正在尝试使用它来捆绑从sbt-sass选择缩小的输出文件。它在该项目的复杂设置中不起作用,因此我创建了一个示例项目,看看我是否可以让它工作。它在示例项目中也不起作用。这是一个测试项目build.sbt
,它尝试创建几个捆绑包,几乎有我能想到的所有可能性,只是为了看看它们中的任何一个是否有效(公共 Github 存储库,您应该能够克隆并立即复制问题):
import com.typesafe.sbt.web.Import.WebKeys._
import com.typesafe.sbt.web.pipeline.Pipeline
name := """sbt-concat-test"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala, SbtWeb)
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
jdbc,
anorm,
cache,
ws
)
resolvers += Resolver.sonatypeRepo("releases")
includeFilter in (Assets, LessKeys.less) := "*.less"
excludeFilter in (Assets, LessKeys.less) := "_*.less"
val myPipelineTask = taskKey[Pipeline.Stage]("Some pipeline task")
myPipelineTask := { mappings => println(mappings); mappings }
pipelineStages := Seq(myPipelineTask, concat)
Concat.groups := Seq(
"style-group1.css" -> group(sourceDirectory.value ** "*.css"),
"style-group2.css" -> group(baseDirectory.value ** "*.css"),
"style-group3.css" -> group((sourceDirectory in Assets).value ** "*.css"),
"style-group4.css" -> group(target.value ** "*.css"),
"style-group5.css" -> group(Seq("core.css", "styles/core.css", "assets/styles/core.css", "app/assets/styles/core.css")),
"style-group6.css" -> group(Seq("lessStyle.css", "ui/lessStyle.css", "styles/ui/lessStyle.css", "assets/styles/ui/lessStyle.css", "app/assets/styles/ui/lessStyle.css")),
"style-group7.css" -> group(Seq("sassStyle.css", "ui/sassStyle.css", "styles/ui/sassStyle.css", "assets/styles/ui/sassStyle.css", "app/assets/styles/ui/sassStyle.css")),
"style-group8.css" -> group(Seq("**/*.css"))
)
我跑来测试; clean; reload; stage
。activator
我看到资产源文件已复制到target
文件夹中,声明的捆绑包具有以下结果:
- style-group1.css不存在
- style-group2.css包含
button.css
和core.css
- style-group3.css包含
core.css
和button.css
- style-group4.css不存在
- style-group5.css仅包含以下内容
core.css
- style-group6.css只包含编译后的内容
lessStyle.scss
- style-group7.css只包含编译后的内容
sassStyle.scss
- style-group8.css不存在
我不明白为什么第 2 和第 3 案例不提取预处理器生成的css
文件,而定制的第 6 和第 7 案例却可以。或许值得注意的是,所有源文件的myPipelineTask
显示结果PathMapping
,以及css
来自 Sass 和 Less 任务的派生和源映射。