[英]How to use a controller inside a folder in the controllers folder with Play framework 1.4.3
[英]How to ignore a folder to compile in play framework
我有一个位于public
文件夹中的node_modules
文件夹,其中包含许多文件,这导致我的localhost:9000继续加载数小时,根据此问题,我想在播放框架中忽略此文件夹, 包括/排除sbt中的资产文件夹/目录/播放框架
我遵循了以下步骤:build.sbt
mappings in (Compile, packageBin) ~= { _.filterNot { case (_, name) =>
name.startsWith("public\\node_modules")
}}
import play.sbt.PlayImport.PlayKeys.playRunHooks
lazy val gulpDirectory = baseDirectory {
_ / "admin-panel"//what should i write here?
}
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
}
}
我有两个问题,第一个是node_modules
位于home/user/git/testproject/public/node_module
我应该怎么写,而不是到admin-panel
中build.sbt
我试图写public
import play.sbt.PlayImport.PlayKeys.playRunHooks
lazy val gulpDirectory = baseDirectory {
_ / "public"
}
但是我得到这个例外
java.io.IOException: Cannot run program "gulp" (in directory "home/user/git/testproject/public"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
[trace] Stack trace suppressed: run last testproject/compile:run for the full output.
[error] (arteciate/compile:run) java.io.IOException: Cannot run program "gulp" (in directory "/home/user/git/testproject/public"): error=2, No such file or directory
[error] Total time: 2 s, completed Aug 4, 2017 7:44:14 PM
其次,如果还有另一种忽略node_modules
文件夹的方法,请帮忙,因为我无法debug
, test
和run
项目。 我正在使用play 2.4
编辑我正在使用play 2.4我的play应用程序运行正常,然后我需要在安装这些组件后安装一些UI组件,例如graunt
bower
ruby
compass
,当我在reload
clean
compile
并单击localhost:9000后执行激活程序时需要花费将近一个小时或更长时间加载页面
由于node_modules
文件夹仅包含不需要sbt
扫描和编译的Node.js
模块,因此您可以在build.sbt
完全排除该文件夹
excludeFilter := {
val public = (baseDirectory.value / "public" / "node_modules").getCanonicalPath
new SimpleFileFilter(_.getCanonicalPath startsWith public)
}
要编译应用程序的Node.js
前端部分,您必须使用专用的Gulp.scala
gulp build
命令,而不是使用Gulp.scala
类。
$ cd /home/user/git/testproject/public/
/home/user/git/testproject/public$ gulp build
如果仍然需要在node_modules
中安装一些Node.js
依赖关系,请在运行gulp build
之前执行以下命令:
$ cd /home/user/git/testproject/public/
/home/user/git/testproject/public$ npm install
如果node_modules
某些Node.js
依赖关系已过期,请在运行node_modules
gulp build
之前执行以下命令:
$ cd /home/user/git/testproject/public/
/home/user/git/testproject/public$ npm update
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.