【问题标题】:Prevent UglifyJS from changing function arguments' names防止 UglifyJS 更改函数参数的名称
【发布时间】:2016-11-07 03:33:12
【问题描述】:

在测试服务器上部署我的应用程序时,我遇到了一个错误,其中 UglifyJS 确实更改了 npm 依赖模块的函数参数,其中这些参数的名称很重要;一些函数是动态调用的,我使用function-arguments 根据它们对应的名称将某些值映射到某些函数参数。

是否可以告诉 UglifyJS 跳过某些模块或文件等?

【问题讨论】:

    标签: javascript meteor uglifyjs


    【解决方案1】:

    根据documentation,您可以使用mangle 选项:

    • mangle(默认 true)— 传递 false 以跳过重整名称,或传递一个对象以指定重整选项

    对象选项:

    • except - 传递一个 Array 的标识符,这些标识符应该被排除在修改之外
    • toplevel — 在顶级范围内声明的名称(默认禁用)。
    • eval — 在使用 eval 或 with 的范围内可见的 mangle 名称(默认禁用)。
    • keep_fnames -- 默认false。传递 true 以不破坏函数名称。对于依赖 Function.prototype.name 的代码很有用。

    //tst.js
    var globalVar;
    function funcName(firstLongName, anotherLongName)
    {
      var myVariable = firstLongName +  anotherLongName;
    }
    
    UglifyJS.minify("tst.js").code;
    // 'function funcName(a,n){}var globalVar;'
    
    UglifyJS.minify("tst.js", { mangle: { except: ['firstLongName'] } }).code;
    // 'function funcName(firstLongName,a){}var globalVar;'
    
    UglifyJS.minify("tst.js", { mangle: { toplevel: true } }).code;
    // 'function n(n,a){}var a;'
    

    我试图找到一个选项来修改函数名称并跳过修改参数,但到目前为止并不好玩(不是说没有......)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2022-06-23
      • 1970-01-01
      • 2022-01-18
      • 2015-08-09
      相关资源
      最近更新 更多