在sbt / play-framework中包含/排除资源文件夹/目录 [英] Include/Exclude asset folder/directory in sbt/play-framework
问题描述
我试图在play-framework 2.4.X应用程序中包含gulp,angular项目。
有一个 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
unmanagedResourceDirectories中Assets中的excludeFilter:= new SimpleFileFilter(_。getParent ==node_modules)
但这些都不起作用,并且SBT包括来自管理面板文件夹的所有文件和文件夹。任何人都可以帮助我,因为我是SBT的新手。
我的解决方案是...
build.sbt
import play.sbt.PlayImport.PlayKeys.playRunHooks
lazy val gulpDirectory = baseDirectory {
_ /admin-panel
}
excludeFilter:= HiddenFileFilter - 的.tmp
unmanagedResourceDirectories在资产1 + = gulpDirectory {_ / DIST}
unmanagedResourceDirectories在资产< + = gulpDirectory {_ /.tmp}
资产中的非托管资源目录< + = gulpDirectory {_ /bower_components}
//这是用于开发环境
unmanagedResourceDirectories在资产1 + = gulpDirectory {_ / SRC/ 应用程序}
playRunHooks 1 + = gulpDirectory.map(路径=>咕嘟咕嘟(路径))
项目/ Gulp.scala
import play.sbt.PlayRunHook
导入sbt._
导入java.net.InetSocketAddress
object gulp {
def apply(base:File):PlayRunHook = {
object GulpProcess extends PlayRunHook {
val gulpFile = gulpfile.js
var process:Option [Process] = None
覆盖def beforeStarted():Unit = {
if(isWindows){
Process( cmd / c gulp build,base).run
} else {
进程(gulp build,base).run
}
}
覆盖def afterStarted(addr:InetSocketAddress):Unit = {
if(isWindows){
Some(Process(cmd / c gulp serve,base).run)
} else {
Some(Process(gulp serve,base).run)
}
}
重写def afterStopped():Unit = {
process.map(p => p.destroy())
process = None
}
private def isWindows:Boolean = {
System.getProperty(os.name)。startsWith Windows)
}
}
GulpProcess
}
}
I am trying to include a gulp, angular project within a play-framework 2.4.X app.
There is a node_modules folder, which contain lots of files and folders. SBT is including those files in my build process; this make my build process very slow.
So I want to exclude that and other unnecessary files and folders. My build.sbt files partial code
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")
But those aren't working, and SBT including all files and folders from admin-panel folder. Can anyone help me out, as I am new to SBT.
解决方案My solution was...
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))
project / 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 } }
这篇关于在sbt / play-framework中包含/排除资源文件夹/目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!