开发环境与生产环境下的sbt-web管道任务设置有什么不同?

7
我希望能在运行开发环境(sbt run)和生产环境(sbt dist/sbt start)时使用不同的值来设置sbt。具体来说,我使用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

使用 in Assets 而不是 not 可能是针对 pipelineStages 的特定设置。你需要在开发中运行 uglify 吗? - Dale Wijnand
1
它仅用于将所有 *.js 连接成一个文件。我无法使用 sbt-concat,原因我记不清了。 - dwickern
1个回答

1
我最终做了类似这样的事情。
def optimize = System.getProperty("optimize") != null

UglifyKeys.compress := optimize
UglifyKeys.mangle := optimize

然后我可以运行 sbt dist -J-Doptimize

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接