【问题标题】:Conditional Compilation using UglifyJS + GruntJS使用 UglifyJS + GruntJS 进行条件编译
【发布时间】:2012-09-10 23:53:35
【问题描述】:

我正在将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')); 我得到 ​​p>

{ mangle: { defines: { DEBUG: false } } }

在我看来是正确的...

有什么想法吗???

【问题讨论】:

  • 尝试了同样的方法,对我也不起作用......
  • 虽然其他 mangle 选项有效,例如 mangle: {except: ['$']} 将保留美元符号而不重命名它。

标签: javascript conditional-compilation gruntjs uglifyjs


【解决方案1】:

这是目前对我有用的:

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

将它放在压缩选项中有效,在这种情况下它将设置APP_DEBUG=false 我从这里得到了这个修复:https://github.com/gruntjs/grunt-contrib-uglify/issues/12

【讨论】:

    【解决方案2】:

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

    以下代码有效:

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

    Passed this to Uglify.

    【讨论】:

      猜你喜欢
      • 2015-01-15
      • 2012-03-30
      • 2019-01-30
      • 1970-01-01
      • 2013-03-01
      • 2021-10-11
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多