2

我想在构建时删除我的 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, ... ]
       }
   },...
...

一些文件.js

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

2 回答 2

2

另请查看grunt-groundskeeper,它删除了这样编写的编译指示:

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

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

它还具有删除对console.log()debugger;语句的调用的选项。

于 2014-07-09T15:38:28.693 回答
1

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'
          ]
        }
      },
于 2014-06-12T22:20:04.853 回答