Условная компиляция с использованием UglifyJS + GruntJS

Я использую grunt-bbb для проекта JavaScript, над которым я работаю. Я бы хотел использовать условную компиляцию, используя поддержку grunt для UglifyJS, но я не могу заставить ее работать. Я пытаюсь передать defines возможность убрать задачу, но она не работает.

Мой файл grunt.js выглядит так:

module.exports = function (grunt) {
    grunt.initConfig({

        // ... config options ...

        uglify: {
            "mangle": {
                "defines": {"DEBUG": false}
            }
        },

        // ... more configs ...

    });

    // ... custom tasks ...

    grunt.registerTask("release", "default min mincss");
};

Я пытался добавить except собственность на mangle объект также, и это, похоже, тоже не работает (он все еще искажает файл...) UglifyJS, очевидно, запускается, но не похоже, что он передает параметры. Я копался в коде а когда я console.log(grunt.config('uglify')); я получил

{ mangle: { defines: { DEBUG: false } } }

что выглядит правильно для меня...

Какие-нибудь мысли???

2 ответа

Решение

Я отправил вопрос в Grunt, и, видимо, проблема в Uglify (как defines параметр фактически обрабатывается противоречит документам).

Этот следующий код работает:

uglify: {
  mangle: {
    defines: {
      DEBUG: ['name', 'true']
    }
  }
}

Передал это, чтобы Углифицировать.

Это то, что в настоящее время работает для меня:

uglify: {
  options: {
    compress: {
      global_defs: {
        APP_DEBUG: false
      }
    }
  }
}

установка опции сжатия работает, в этом случае она установит APP_DEBUG=falseЯ получил это исправление здесь: https://github.com/gruntjs/grunt-contrib-uglify/issues/12

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