【问题标题】:Include/Exclude asset folder/directory in sbt/play-framework在 sbt/play-framework 中包含/排除资产文件夹/目录
【发布时间】:2015-11-07 03:44:41
【问题描述】:

我正在尝试在 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"
excludeFilter in Assets in unmanagedResourceDirectories := new SimpleFileFilter(_.getParent == "node_modules")

但这些都不起作用,SBT 包括管理面板文件夹中的所有文件和文件夹。任何人都可以帮助我,因为我是 SBT 的新手。

【问题讨论】:

    标签: java playframework sbt gulp


    【解决方案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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2018-03-28
      相关资源
      最近更新 更多