使用UglifyJS + GruntJS进行条件编译

时间:2012-09-10 23:53:36

标签: javascript conditional-compilation gruntjs uglifyjs

我正在使用grunt-bbb来处理我正在处理的JavaScript项目。我喜欢使用grunt对UglifyJS的支持来使用条件编译,但我似乎无法让它工作。我正在尝试将defines选项传递给uglify任务,但它似乎没有工作。

我的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 个答案:

答案 0 :(得分:4)

目前这对我有用:

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

将它放在compress选项中,在这种情况下,它将设置APP_DEBUG=false 我从这里得到了这个解决方案:https://github.com/gruntjs/grunt-contrib-uglify/issues/12

答案 1 :(得分:1)

我向Grunt提交了issue,而且问题出在Uglify内部(实际处理defines参数的方式与文档相矛盾)。

以下代码有效:

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

Passed this to Uglify