Условное удаление DEBUG во время задачи uglifyjs в Grunt

Я хотел бы удалить свои статусы DEBUG при сборке, и я заметил на http://lisperator.net/uglifyjs/compress Я могу определить global_defs: { DEBUG : false } для удаления всего, что заключено в отладочном предложении if (DEBUG) {}

Моя задача uglify, похоже, не удаляет какой-либо раздел DEBUG, есть мысли о том, что я делаю неправильно?

Я использую grunt-contrib-uglify v0.3.3

Вот моя грубая задача: ...

uglify: {
   ...
   simple: {
       options : {
          mangle: false,
          compress: {
            global_defs: {
              DEBUG: false
            },
            dead_code: true
          }
       },
       files: {
          'yayMin.js' : [ ..., somefile.js, ... ]
       }
   },...
...

somefile.js

...
    if (DEBUG) {
       console.log('epic fail - fix your build');
    }
...

person michaelt    schedule 12.06.2014    source источник


Ответы (2)


Также проверьте grunt-groundskeeper, который удаляет прагмы, написанные следующим образом:

// <debug>
doSomething();
// </debug>

// <validation>
performSomeValidationOnlyNeededDuringDevelopment();
// </validation>

У него также есть опции для удаления вызовов операторов console.log() и debugger;.

person David Boike    schedule 09.07.2014

Похоже, что в grunt-contrib-uglify есть ошибка, которая удаляет global_defs только из одного файла. Я заметил, что операторы DEBUG будут удалены в соответствии с параметрами, если я уменьшу свои файлы до одного файла.

Не сработало:

 ...
 files: {
          'yayMin.js' : [ ..., anotherfile.js, somefile.js, anotherfile2.js, ... ]
       }
 ...

Работал:

...
files: {
          'yayMin.js' : [ somefile.js ]
       }
...

Финальное задание ворчания

uglify: {
'build-minify' : {
        options: {
          mangle: false,
          compress: {
            global_defs: {
              DEBUG: false
            },
            dead_code: true
          },
          wrap: true
        },
        files : {
          'justSayNoToDebug.js' : [
            'ahHaveDebugsInMe.js'
          ]
        }
      },
person michaelt    schedule 12.06.2014
comment
ууууууууууууууууууууууууууууууууууууууууу - person Cory Danielson; 25.02.2015