gpt4 book ai didi

playframework - 如何从 SBT 运行 webpack

转载 作者:行者123 更新时间:2023-12-03 14:36:37 24 4
gpt4 key购买 nike

我正在开发一个 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

在开发模式下,我使用 play action hooks运行 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
}
}

它就像一个魅力。你可以在我的 github 帐户中找到一个使用这种技术的示例游戏项目: https://github.com/nouhoum/play-react-webpack/blob/master/webpack.sbt

我希望这有帮助 ;-)

关于playframework - 如何从 SBT 运行 webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com