在Grunt的uglifyjs任务中有条件地移除DEBUG

我想在构build中删除我的DEBUG语句,我注意到在http://lisperator.net/uglifyjs/compress我可以定义global_defs: { DEBUG : false }删除包含在debugging子句中的任何东西, if (DEBUG) {}

我的uglify任务似乎没有删除任何DEBUG部分,对我在做什么错误的任何想法?

我正在使用grunt-contrib-uglify v0.3.3

这是我的咕task任务:

 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'); } ... 

还可以看看grunt-groundskeeper ,它删除了这样的编译指示:

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

它也有选项去除对console.log()debugger;调用debugger; 声明。

grunt-contrib-uglify中似乎存在一个缺陷,只能从一个文件中删除global_defs。 如果我将文件减less到一个文件,我注意到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' ] } },