【terser】terser的compress选项解释

  • defaults(默认值为true)- 将false传递以禁用大多数默认启用的压缩变换。当您只想启用一些压缩选项并禁用其余选项时,这很有用。
  • arrows(默认值为true) - 对象和类字面量方法也将被转换为箭头表达式(如果所得代码更短):m(){return x}变成m:()= > x。要对不使用this或arguments的常规ES5函数执行此操作,请参见unsafe_arrows。
  • arguments(默认值为false) - 尽可能用函数参数名称替换arguments [index]。
  • booleans(默认值为true)- boolean语境的各种优化,例如!!a?b:c→a?b:c
  • booleans_as_integers(默认值为false)- 将布尔值转换为0和1,还使得布尔值的比较使用==和!=而不是===和!=。
  • collapse_vars(默认值为true) - 如果允许副作用,则折叠单个非常量变量。
  • comparisons(默认值为true) - 对二进制节点应用某些优化,例如!(a <= b)→ a> b(仅在unsafe_comps时),尝试否定二进制节点,例如a =!b &&!c &&!d &&!e → a =!(b || c || d || e)等。注意:comparisons与lhs_constants一起使用效果最佳。
  • computed_props(默认值为true) - 将常量计算出的属性转换为普通属性:{["computed"]:1}转换为{computed:1}。
  • conditionals(默认值为true) - 为if-s和条件表达式应用优化
  • dead_code(默认值为true) - 删除无法访问的代码
  • directives(默认值为true) - 删除多余或非标准指令
  • drop_console(默认值为false) - 将true传递以丢弃console。 *函数
  • global_defs(默认值为{}) - 请参见条件编译
  • hoist_funs(默认值为false) - 提升函数声明
  • hoist_props(默认值为true) - 将常量对象和数组文字中的属性提升为普通变量,受一组约束的约束。例如:var o = {p:1,q:2}; f(o.p,o.q);被转换为f(1,2);。注意:hoist_props与启用混淆的compress选项传递设置为2或更高以及启用toplevel的压缩选项一起使用最佳。
  • hoist_vars(默认值为false) - 提升var声明(默认情况下为false,因为它似乎会增加输出的大小)
  • if_return(默认值为true) - 针对if / return和if / continue进行优化
  • inline(默认值为true) - 内联函数调用,带有简单/返回语句:
  • false - 与0相同 0 - 禁用内联 1 - 内联简单函数 2 - 内联带有参数的函数 3 - 内联带有参数和变量的函数 true - 与3相同 join_vars(默认值为true) - 加入连续的var,let和const语句
  • keep_classnames(默认值为false) - 传递true以防止压缩器丢弃类名。传递正则表达式只保留与该正则表达式匹配的类名。还请参阅:keep_classnames搅拌选项。
  • keep_fargs(默认值为true) - 防止压缩器丢弃未使用的函数参数。您需要此代码依赖于Function.length。
  • keep_infinity(默认值为false) - 传递true以防止将Infinity压缩为1/0,这可能会导致Chrome出现性能问题。
  • lhs_constants(默认值为true) - 将常量值移动到二进制节点的左侧。 foo == 42 → 42 == foo
  • loops(默认值为true) - 针对do,while和for循环进行优化,当我们可以静态确定条件时。
  • module(默认为false) - 压缩ES6模块时传递true。隐含了严格模式以及toplevel选项。
  • negate_iife(默认值为true) - 反转“Immediately-Called函数表达式”,其中返回值被丢弃,以避免代码生成器插入的括号。
  • properties(默认值为true) - 使用点符号重写属性访问,例如foo [“bar”] → foo.bar
  • pure_funcs (默认值为null)- 您可以传递一个函数名数组,Terser将假定这些函数不会产生副作用。注意:不会检查在作用域内是否重新定义了名称。例如,如果变量q在其他地方没有使用,则在此示例中Terser将删除它,但仍将保留Math.floor(a/b),因为它不知道其作用。您可以传递pure_funcs:['Math.floor']来让它知道此函数不会产生任何副作用,这种情况下整个语句都将被丢弃。当前实现增加了一些开销(压缩将变慢)。
  • pure_getter(默认为“strict”):如果您将其设置为true,则Terser将假定对象属性访问(例如foo.bar或foo [“bar”])没有产生任何副作用。指定“strict”仅在foo肯定不会有异常(即不为null或undefined)时将foo.bar视为无副效果。
  • reduce_vars(默认为true) - 提高对分配并用作常量值的变量进行优化。
  • reduce_funcs(默认为true) - 在可能的情况下使单次使用函数内联。取决于启用reduce_vars。禁用此选项有时会提高输出代码的性能。
  • sequences (默认为true) - 使用逗号运算符连接连续的简单语句。可以设置为正整数,以指定将生成的连续逗号序列的最大数量。如果将此选项设置为true,则默认序列限制为200。将选项设置为false或0以禁用。最小序列长度为2。序列值为1的序列祖先等同于true,因此表示200。在非常罕见的情况下,默认序列限制会导致压缩时间非常慢,在这种情况下,推荐使用20或更小的值。
  • side_effects (默认为true) – 删除无副作用且结果未被使用的表达式。
  • switches (默认为true) – 去重和删除不可达的开关分支。
  • toplevel (默认为false) – 在顶级作用域中丢弃未被引用的函数和/或变量 (默认情况下为 false,设置为 true 可以同时丢弃未被引用的函数和变量)。
  • top_retain (默认为null) – 防止特定的顶级 function 和变量被删除 ("funcs" and/or "vars")(可以是数组,逗号分隔的字符串、RegExp 或 function。意味着 toplevel)。
  • typeofs (默认为true) – 将 typeof foo == "undefined" 转换为 foo === void 0。注意:针对 IE10 及更早版本的浏览器,建议将此值设置为 false,因为存在已知问题。
  • unsafe (默认为 false) – 应用 "不安全" 的转换(详细信息)。
  • unsafe_arrows (默认为 false) – 如果函数体不引用 this,则将 ES5 风格的匿名函数表达式转换为箭头函数。注意:如果代码依赖函数具有原型,而箭头函数缺乏原型,则执行此转换不总是安全的。该转换要求将 ecma 压缩选项设置为 2015 或更高版本。
  • unsafe_comps (默认为 false) – 将 < 和 <= 反转为 > 和 >=,以允许改进压缩。当至少两个操作数中的一个是具有计算值的对象时,这可能是不安全的,因为使用了类似 get 或 valueOf 的方法。在比较操作数交换后,这可能会导致执行顺序发生变化。仅当同时将 comparisons 和 unsafe
  • unsafe_math (默认为 false) - 对数值表达式进行优化,例如 2 x 3 可以转换为 6 * x,这可能会产生不精确的浮点数结果。
  • unsafe_symbols (默认为 false) - 从本地 Symbol 声明中删除键值,例如 Symbol("kDog") 变为 Symbol()。
  • unsafe_methods (默认为false) - 将{ m: function(){} } 转换为 { m(){} }。必须将 ecma 设置为 6 或更高版本才能启用此转换。如果 unsafe_methods 是 RegExp,则与 RegExp 匹配的键值对将被转换为简洁方法。注意:如果启用此选项,若任何代码尝试在前一个函数上使用 new,则存在“ is not a constructor ”TypeError 的风险。
  • unsafe_proto (默认为 false) - 优化像 Array.prototype.slice.call(a) 这样的表达式为 [].slice.call(a)。
  • unsafe_regexp (默认为 false) - 启用变量与 RegExp 值之间的替换,就像它们是常量一样。
  • unsafe_undefined (默认为 false) - 如果作用域中存在名为 undefined 的变量,则用 void 0 替换它(变量名将被混淆,通常被简化为单个字符)。
  • unused (默认为 true) - 删除未引用的函数和变量(简单的直接变量赋值不算作引用,除非设置为"keep_assign")。

你可能感兴趣的:(前端)