尝试在sbt-web

时间:2018-02-27 15:37:25

标签: scala sbt playframework-2.3 sbt-web

我有一个使用Play Framework 2.3的项目,我在整个资产管道中处理JS文件的方式存在一些问题。我想以不同的方式处理我的JS源文件,具体取决于应用程序是以dev还是prod模式启动的。具体来说,我不想在开发模式下运行名为transpilewatch的管道阶段,而是在prod模式下运行transpileuglify

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

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

我无法找到有关此问题的更多信息,Play documentation甚至没有提到pipelineStages in Assetssbt-web自述文件仅提及它。除此之外,我只发现了一堆博客文章。根据我的阅读,我得到的印象是pipelineStages in Assets仅限于开发模式,但该假设显然是不正确的。

我理解playRunHooks是开发独有的东西,但afaik我不能使用它,因为它在配置完成后运行,因此不能用于有条件地配置管道阶段。
我对此问题的当前非常丑陋的解决方法是我在playRunHooks中设置了一个系统属性,并在watch管道阶段有一个包装器,在调用此属性时会对其进行检查

那么有没有正确的方法为我的sbt-web构建指定'dev-only'管道阶段?任何建议将不胜感激。

(我们也正在迁移到Play Framework 2.6,以防这给我更多的可能性)

0 个答案:

没有答案