3

我正在将grunt-bbb用于我正在处理的 JavaScript 项目。我很想使用 grunt 对 UglifyJS 的支持来使用条件编译,但我似乎无法让它工作。我正在尝试传递一个definesuglify 任务的选项,但它似乎不起作用。

我的 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 } } }

这对我来说看起来是正确的......

有什么想法吗???

4

2 回答 2

4

这是目前对我有用的:

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

把它放在 compress 选项中是可行的,在这种情况下,它会设置APP_DEBUG=false 我从这里得到这个修复:https ://github.com/gruntjs/grunt-contrib-uglify/issues/12

于 2013-07-04T18:07:39.063 回答
1

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

以下代码有效:

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

将此传递给 Uglify

于 2012-09-14T08:23:22.243 回答