Ответ 1
Оказывается, виновник был, более или менее, uglifyjs. Имя свойства глобального определения в задаче отличается между CMD и API-интерфейсом Programmatic.
- строка cmd:
--define VARNAME=VALUE
- программный:
compress: {global_defs: { varname: value } }
При этом также кажется, что minifyify или браузерный не передает параметры командной строки cmd для глобальных определений - мы все еще изучаем это
программное решение
Используя программный API Browserify и minifyify, задача сборки работает. Ниже приведена та же задача, что и в OP, но она работает:
"use strict";
var browserify = require("browserify"),
fs = require("fs");
browserify("src/scripts/app/index.js")
.transform("babelify", {presets: ["es2015"], plugins: ["transform-object-assign"]})
.plugin("minifyify", {map: false, uglify: {
compress: {
drop_console: true,
dead_code: true,
conditionals: true,
unused: true,
if_return: true,
global_defs: {
DEBUG: false
}
},
mangle: true,
"screw-ie8": true
}})
.bundle()
.pipe(fs.createWriteStream("build/prod/public/assets/js/appBundle.js"));
обновление в uglifyjs docs
Я предложил внести изменения в текущие документы uglifyjs, предоставив пример с использованием программного API, как указано выше, чтобы избежать этой проблемы для других в будущем.