You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在sbt-web中为Play 2.3的Prod/Dev环境配置不同PipelineStages

针对Play Framework 2.3环境差异化配置资产管道

我刚好熟悉Play 2.3的资产管道机制,你的需求完全可以通过分环境配置sbt设置来实现。首先得明确:Play默认只在生产模式下执行pipelineStages里的阶段,开发模式下会跳过,所以你需要单独给Dev环境显式配置对应的阶段和监听逻辑。

以下是具体的配置步骤,直接修改你的build.sbt即可:

1. 移除全局的pipelineStages配置

先删掉你原来的pipelineStages := Seq(transpile, uglify),我们要把这个配置拆分到不同环境里。

2. 配置生产环境的资产阶段

给Prod环境单独指定transpile + uglify的流程:

inConfig(Prod)(Seq(
  pipelineStages := Seq(transpile, uglify)
))

这样用start或者dist命令启动生产环境时,会自动执行这两个阶段,和你之前的预期一致。

3. 配置开发环境的资产阶段

开发环境我们只需要transpile,还要加上文件监听,这样修改JS源文件时会自动重新编译:

inConfig(Dev)(Seq(
  // 启用transpile阶段
  pipelineStages := Seq(transpile),
  // 将JS源文件目录添加到监听列表,触发自动重新transpile
  watchSources ++= (baseDirectory.value / "app" / "assets" / "js" ** "*.js").get
))

这里的路径app/assets/js是默认的JS源文件目录,如果你的源文件放在其他位置,记得修改这个路径。

生效逻辑解释

  • 当你用run命令启动开发环境时,Play会先执行一次transpile,之后只要监听目录下的JS文件有变化,就会自动重新执行transpile,不用重启应用。
  • 生产环境下的start/dist命令则会按配置执行transpile + uglify,输出压缩后的最终JS文件。

内容的提问来源于stack exchange,提问作者Lennholm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:32:05