关于前端:terserterser的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,则存在“<method name> 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”)。