作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Play 2.4 应用程序,并希望 SBT 在编译期间运行 webpack 以生成静态 Assets 。
我试过https://github.com/stejskal/sbt-webpack但这似乎对我不起作用。
最佳答案
我通过定义一个自定义 sbt 任务来让它工作,该任务用于 dist
的依赖项。和 stage
打包应用程序时调用的任务。
任务的代码很简单:
lazy val webpack = taskKey[Unit]("Run webpack when packaging the application")
def runWebpack(file: File) = {
Process("webpack", file) !
}
webpack := {
if(runWebpack(baseDirectory.value) != 0) throw new Exception("Something goes wrong when running webpack.")
}
dist <<= dist dependsOn webpack
stage <<= stage dependsOn webpack
webpack watch
当代码更改时:
PlayKeys.playRunHooks <+= baseDirectory.map(Webpack.apply)
Webpack
定义如下:
import java.net.InetSocketAddress
import play.sbt.PlayRunHook
import sbt._
object Webpack {
def apply(base: File): PlayRunHook = {
object WebpackHook extends PlayRunHook {
var process: Option[Process] = None
override def beforeStarted() = {
process = Option(
Process("webpack", base).run()
)
}
override def afterStarted(addr: InetSocketAddress) = {
process = Option(
Process("webpack --watch", base).run()
)
}
override def afterStopped() = {
process.foreach(_.destroy())
process = None
}
}
WebpackHook
}
}
关于playframework - 如何从 SBT 运行 webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568008/
我是一名优秀的程序员,十分优秀!