我有一个使用Play Framework 2.3的项目,我在整个资产管道中处理JS文件的方式存在一些问题。我想以不同的方式处理我的JS源文件,具体取决于应用程序是以dev还是prod模式启动的。具体来说,我不想在开发模式下运行名为transpile
和watch
的管道阶段,而是在prod模式下运行transpile
和uglify
。
我已经使用pipelineStages := Seq(transpile, uglify)
设置了全局管道阶段,并且只在prod模式下运行,正如预期的那样。
现在,对于开发模式,我已经设置了pipelineStages in Assets := Seq(transpile, watch)
,它适用于dev,但我的问题是它也在prod模式下运行。 watch
只需要以开发模式运行。
我无法找到有关此问题的更多信息,Play documentation甚至没有提到pipelineStages in Assets
,sbt-web自述文件仅提及它。除此之外,我只发现了一堆博客文章。根据我的阅读,我得到的印象是pipelineStages in Assets
仅限于开发模式,但该假设显然是不正确的。
我理解playRunHooks
是开发独有的东西,但afaik我不能使用它,因为它在配置完成后运行,因此不能用于有条件地配置管道阶段。
我对此问题的当前非常丑陋的解决方法是我在playRunHooks
中设置了一个系统属性,并在watch
管道阶段有一个包装器,在调用此属性时会对其进行检查
那么有没有正确的方法为我的sbt-web构建指定'dev-only'管道阶段?任何建议将不胜感激。
(我们也正在迁移到Play Framework 2.6,以防这给我更多的可能性)