activator dist:不包括托管资源(仅限其处理结果)

时间:2015-03-16 10:18:48

标签: playframework playframework-2.0 typesafe-activator

如何避免包含托管资源,例如activator dist的zip输出中的sass文件? 我手动将它们从我的项目中的目标目录中删除,这样我的项目现在在目标目录中没有scss文件的痕迹。但是仍然包含zip中资产jar中的所有scss文件。 有没有办法,手动或非手动,我可以避免这种情况?

2 个答案:

答案 0 :(得分:1)

看看Sbt-filter。它是一个插件,用于过滤哪些文件包含在您的dist中,哪些文件不包含在您的dist中。您可以将过滤器添加到build.sbt。 您必须通过将过滤器插件添加到管道阶段来启用过滤器插件:

lazy val root = (project in file(".")).enablePlugins(SbtWeb)

pipelineStages := Seq(filter)

进一步包括css并排除scss添加以下行: 注意:包含CSS文件不是必需的,仅作为如何包含某些文件的示例。

includeFilter in filter := "*.css"

excludeFilter in filter := "*.scss"

答案 1 :(得分:0)

将以下代码放在build.sbt中是排除目录的一种方法:

includeFilter in filter := new FileFilter {
  def accept(pathname: File): Boolean = {
    pathname.getAbsolutePath.contains("public/uploads/")
  }
}

pipelineStages := Seq(filter, digest, gzip)

更多解释

来自https://github.com/sbt/sbt/blob/9ee8299383afb8c64f175acd9d3cb8648be519b6/util/io/src/main/scala/sbt/NameFilter.scala#L97

字符串隐式转换为GlobFilter。 GlobFilter可以变成AllPassFilter,ExactFilter和PatternFilter。

这3个过滤器继承自NameFilter。并且NameFilter仅根据文件/目录的名称(而不是整个绝对路径)过滤文件/目录。

所以,在某种程度上,如果你想删除目录"上传",你可以:

includeFilter in filter := "uploads"

我不喜欢这个解决方案,它对我来说看起来有问题,因为可能有多个文件夹名为" uploads"。这就是我选择实现自己的FileFilter的原因。