5

我有一个使用 Play Framework 2.3 的项目,并且在整个资产管道中如何处理 JS 文件时遇到了一些问题。我想根据应用程序是在开发模式还是产品模式下启动以不同方式处理我的 JS 源文件。具体来说,我不想在 dev 模式下运行调用的管道阶段,而是在阶段transpile和prod模式下运行。watchtranspileuglify

正如预期的那样,我已经设置了全局管道阶段,pipelineStages := Seq(transpile, uglify)并且仅在 prod 模式下运行。

现在,对于开发模式,我已经将它设置为pipelineStages in Assets := Seq(transpile, watch)适用于开发,但我的问题是它也在 prod 模式下运行。watch只需要在开发模式下运行。

我还没有找到很多关于这方面的好信息,Play 文档甚至没有提到pipelineStages in Assetssbt-web自述文件只是顺便提到了它。除此之外,我只找到了一堆博客文章。根据我的阅读,我得到了pipelineStages in Assets开发模式独有的印象,但这种假设显然是不正确的。

我知道playRunHooks这对于开发人员专有的东西意味着什么,但是我不能为此使用它,因为它在配置完成后运行,因此不能用于有条件地配置管道阶段。
我目前针对这个问题的极其难看的解决方法是,我在其中设置了一个系统属性,playRunHooks并在管道阶段有一个包装器watch,当它被调用时会检查这个属性。

那么是否有任何适当的方法可以为我的 sbt-web 构建指定“仅限开发”管道阶段?任何建议,将不胜感激。

(我们也在迁移到 Play Framework 2.6 的过程中,以防万一这给了我更多的可能性)

4

0 回答 0