Включить / исключить папку / каталог ресурсов в sbt/play-framework
Я пытаюсь включить gulp, angular project в приложение play-framework 2.4.X.
Существует папка node_modules, которая содержит множество файлов и папок. SBT включает эти файлы в мой процесс сборки; это делает мой процесс сборки очень медленным.
Поэтому я хочу исключить этот и другие ненужные файлы и папки. Частичный код моих файлов build.sbt
lazy val gulpDirectory = baseDirectory { _ / "admin-panel" }
unmanagedResourceDirectories in Assets <+= gulpDirectory
//includeFilter in Assets in unmanagedResourceDirectories := {
// new SimpleFileFilter( file =>
// file.getParent == "bower_components" ||
// file.getParent == "tmp" ||
// file.getParent == "dist"
// )
//}
includeFilter in Assets in unmanagedResourceDirectories := "bower_components" || "dist" || "tmp"
excludeFilter in Assets in unmanagedResourceDirectories := new SimpleFileFilter(_.getParent == "node_modules")
Но они не работают, и SBT включает все файлы и папки из папки админ-панели. Может кто-нибудь помочь мне, так как я новичок в SBT.
1 ответ
Мое решение было...
build.sbt
import play.sbt.PlayImport.PlayKeys.playRunHooks
lazy val gulpDirectory = baseDirectory {
_ / "admin-panel"
}
excludeFilter := HiddenFileFilter -- ".tmp"
unmanagedResourceDirectories in Assets <+= gulpDirectory { _ / "dist"}
unmanagedResourceDirectories in Assets <+= gulpDirectory { _ / ".tmp"}
unmanagedResourceDirectories in Assets <+= gulpDirectory { _ / "bower_components"}
//this is for development environment
unmanagedResourceDirectories in Assets <+= gulpDirectory { _ / "src" / "app"}
playRunHooks <+= gulpDirectory.map(path => Gulp(path))
проект / Gulp.scala
import play.sbt.PlayRunHook
import sbt._
import java.net.InetSocketAddress
object Gulp {
def apply(base: File): PlayRunHook = {
object GulpProcess extends PlayRunHook {
val gulpFile = "gulpfile.js"
var process: Option[Process] = None
override def beforeStarted(): Unit = {
if (isWindows) {
Process("cmd /c gulp build", base).run
} else {
Process("gulp build", base).run
}
}
override def afterStarted(addr: InetSocketAddress): Unit = {
if (isWindows) {
Some(Process("cmd /c gulp serve", base).run)
} else {
Some(Process("gulp serve", base).run)
}
}
override def afterStopped(): Unit = {
process.map(p => p.destroy())
process = None
}
private def isWindows: Boolean = {
System.getProperty("os.name").startsWith("Windows")
}
}
GulpProcess
}
}