我正在開發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重新運行」