Различные настройки задачи конвейера sbt-web в разработке против производства?

Я хотел бы, чтобы параметр sbt имел другое значение при запуске в разработке (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

1 ответ

Решение

Я закончил тем, что делал что-то вроде этого

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

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

Тогда я могу бежать sbt dist -J-Doptimize

Другие вопросы по тегам