我正在开发Play 2.4应用程序,并希望SBT在编译期间运行webpack以生成静态资源。我想尝试https://github.com/stejskal/sbt-webpack但它似乎不适用于我。如何从SBT运行webpack
15
A
回答
28
我设法通过定义一个自定义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
我希望这有助于;-)
1
Nouhoum的回答是工作的罚款,直到我更新到SBT 1.0.x的
短短数需要更新:
import scala.sys.process.Process
lazy val webpack = taskKey[Unit]("Run webpack when packaging the application")
def runWebpack(file: File) = {
Process("npm run build", file) !
}
webpack := {
if(runWebpack(baseDirectory.value) != 0) throw new Exception("Something went wrong when running webpack.")
}
dist := (dist dependsOn webpack).value
stage := (stage dependsOn webpack).value
相关问题
- 1. 从sbt运行hprof
- 2. SBT如何运行InputTask
- 3. 如何从JavaScript文件运行Webpack?
- 4. 如何从webpack运行node main.js
- 5. 运行从SBT控制台
- 6. 如何使用sbt运行Android测试?
- 7. 如何阻止Intellij自动运行SBT
- 8. 如何SBT任务中运行罐子?
- 9. 如何获得“sbt hello,world”运行?
- 10. Webpack未运行
- 11. SBT运行测试
- 12. 以-deprecation运行SBT
- 13. 从SBT运行Mockito时发生java.lang.IllegalAccessError
- 14. 在SBT中使用“sbt testOnly”从jar中运行测试?
- 15. 如何使用pm2运行`webpack --watch`?
- 16. 如何定义任务使用hprof从sbt运行0.10
- 17. 如何调试从sbt运行的测试
- 18. 如何从sbt在ec2上运行spark集群?
- 19. 如何运行运行 - 历史-API的回退的WebPack内
- 20. 如何从.js文件而不是webpack.config配置和运行webpack
- 21. 如何防止Webpack从Makefile食谱中运行多次
- 22. 运行webpack从npm-install-webpack-plugin得到错误
- 23. 运行的WebPack,找不到的WebPack
- 24. Force sbt 0.11运行测试
- 25. sbt运行,但./spark-submit不
- 26. 不能运行SBT在RedHat
- 27. 如何用参数在一行中运行sbt程序?
- 28. 我在事故中删除了.sbt目录,如何让sbt再次运行?
- 29. 如何在mvn发行版中运行npm webpack:执行目标
- 30. 斯卡拉SBT:如何通过运行<code>sbt compile</code> “与-deprecation重新运行”