开发与生产中不同的sbt-web管道任务设置?

dwi*_*ern 6 sbt playframework uglifyjs playframework-2.3 sbt-web

我希望sbt设置在development(sbt run)中运行时具有与生产(sbt dist/ sbt start)不同的值.

具体来说我使用的是sbt-uglify.我在开发中使用它将javascript资产连接到一个文件中.我在开发中禁用了压缩和修改,因为它使代码更难调试.

在生产中,我想使用压缩来删除调试代码块(if (DEBUG) { ... }),这可能是使用uglifyjs的死代码删除功能.

我希望这可行:

// "in Assets" to use uglify in dev & prod
pipelineStages in Assets := Seq(uglify)

// enable compression and mangling in prod
UglifyKeys.compress := true
UglifyKeys.mangle := true

// disable in development (DOESN'T WORK! Values are always true)
UglifyKeys.compress in Assets := false
UglifyKeys.mangle in Assets := false
Run Code Online (Sandbox Code Playgroud)

dwi*_*ern 1

我最终做了这样的事情

def optimize = System.getProperty("optimize") != null

UglifyKeys.compress := optimize
UglifyKeys.mangle := optimize
Run Code Online (Sandbox Code Playgroud)

然后我就可以跑了sbt dist -J-Doptimize