Условная компиляция с использованием 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 } } }

что мне кажется правильным...

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


person Jesse Fulton    schedule 10.09.2012    source источник
comment
То же самое пробовал, у меня тоже не работает...   -  person Dmitry Pashkevich    schedule 13.09.2012
comment
Хотя другие параметры мангла работают, например, mangle: {except: ['$']} оставит символ доллара, не переименовывая его.   -  person Dmitry Pashkevich    schedule 13.09.2012


Ответы (2)


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

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

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

Передал это в Uglify.

person Dmitry Pashkevich    schedule 14.09.2012

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

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

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

person nate    schedule 04.07.2013