javascript混淆压缩工具
正在努力为您加载...

javascript混淆压缩工具使用帮助:

压缩器选项

Compressor options

你要传入 --compress (-c)来启用压缩功能。你可以用逗号隔开选项。选项的形式为foo=bar,或者就foo(后者等同于你要设为true,相当于foo=true的缩写)。

  • sequences(默认true) -- 连续声明变量,用逗号隔开来。可以设置为正整数来指定连续声明的最大长度。如果设为true 表示默认200个,设为false0则禁用。 sequences至少要是2,1的话等同于true(即200)。默认的sequences设置有极小几率会导致压缩很慢,所以推荐设置成20或以下。

  • properties -- 用.来重写属性引用,例如foo["bar"] → foo.bar

  • dead_code -- 移除没被引用的代码

  • drop_debugger -- 移除 debugger;

  • unsafe (默认 false) -- 使用 "unsafe"转换 (下面详述)

  • unsafe_comps (默认 false) -- 保留< 和 <=不被换成 > 和 >=。假如某些运算对象是用get或 valueOfobject得出的时候,转换可能会不安全,可能会引起运算对象的改变。此选项只有当 comparisonsunsafe_comps 都设为true时才会启用。

  • unsafe_math (默认 false) -- 优化数字表达式,例如2 * x * 3 变成 6 * x, 可能会导致不精确的浮点数结果。

  • unsafe_proto (默认 false) -- 把Array.prototype.slice.call(a) 优化成 [].slice.call(a)

  • conditionals -- 优化if等判断以及条件选择

  • comparisons -- 把结果必然的运算优化成二元运算,例如!(a <= b) → a > b (只有设置了 unsafe_comps时才生效);尽量转成否运算。例如 a = !b && !c && !d && !e → a=!(b||c||d||e)

  • evaluate -- 尝试计算常量表达式

  • booleans -- 优化布尔运算,例如 !!a? b : c → a ? b : c

  • loops -- 当dowhile 、 for循环的判断条件可以确定是,对其进行优化。

  • unused -- 干掉没有被引用的函数和变量。(除非设置"keep_assign",否则变量的简单直接赋值也不算被引用。)

  • toplevel -- 干掉顶层作用域中没有被引用的函数 ("funcs")和/或变量("vars") (默认是false , true 的话即函数变量都干掉)

  • top_retain -- 当设了unused时,保留顶层作用域中的某些函数变量。(可以写成数组,用逗号隔开,也可以用正则或函数. 参考toplevel)

  • hoist_funs -- 提升函数声明

  • hoist_vars (默认 false) -- 提升 var 声明 (默认是false,因为那会加大文件的size)

  • if_return -- 优化 if/return 和 if/continue

  • join_vars -- 合并连续 var 声明

  • cascade -- 弱弱地优化一下连续声明, 将 x, x 转成 xx = something(), x 转成 x = something()

  • collapse_vars -- 当 var 和 const 单独使用时尽量合并

  • reduce_vars -- 优化某些变量实际上是按常量值来赋值、使用的情况。

  • warnings -- 当删除没有用处的代码时,显示警告

  • negate_iife -- 当立即执行函数(IIFE)的返回值没用时,取消之。避免代码生成器会插入括号。

  • pure_getters -- 默认是 false. 如果你传入true,UglifyJS会假设对象属性的引用(例如foo.bar 或 foo["bar"])没有函数副作用。

  • pure_funcs -- 默认 null. 你可以传入一个名字的数组,UglifyJS会假设这些函数没有函数副作用。警告:假如名字在作用域中重新定义,不会再次检测。例如var q = Math.floor(a/b),假如变量q没有被引用,UglifyJS会干掉它,但 Math.floor(a/b)会被保留,没有人知道它是干嘛的。你可以设置pure_funcs: [ 'Math.floor' ] ,这样该函数会被认为没有函数副作用,这样整个声明会被废弃。在目前的执行情况下,会增加开销(压缩会变慢)。

  • drop_console -- 默认 false. 传true的话会干掉console.*函数。如果你要干掉特定的函数比如console.info ,又想删掉后保留其参数中的副作用,那用pure_funcs来处理吧。

  • expression -- 默认 false。传true来保留终端语句中没有"return"的完成值。例如在bookmarklets。

  • keep_fargs -- 默认true。阻止压缩器干掉那些没有用到的函数参数。你需要它来保护某些依赖Function.length的函数。

  • keep_fnames -- 默认 false。传 true来防止压缩器干掉函数名。对那些依赖Function.prototype.name的函数很有用。延展阅读:keep_fnames 混淆选项.

  • passes -- 默认 1。运行压缩的次数。在某些情况下,用一个大于1的数字参数可以进一步压缩代码大小。注意:数字越大压缩耗时越长。

  • keep_infinity -- 默认 false。传true以防止压缩时把1/0转成Infinity,那可能会在chrome上有性能问题。

美化器选项

Beautifier options

代码生成器默认会输出尽量简短的代码。假如你想美化一下输出代码,请设置--beautify (-b)。你可以传入更多可选的选项参数来控制代码生成:

  • beautify (默认 true) -- 是否美化输出代码。传-b的话就是设成true。假如你想生成最小化的代码同时又要用其他设置来美化代码,你可以设-b beautify=false

  • indent-level (默认 4) 缩进格数

  • indent-start (默认 0) -- 每行前面加几个空格

  • quote-keys (默认 false) -- 传true的话会在对象所有的键加上括号

  • space-colon (默认 true) -- 在冒号后面加空格

  • ascii-only (默认 false) -- 避免Unicode字符在字符串/正则中出现(非ascii字符会变不合法)。

  • inline-script (默认 false) -- 避免字符串中出现</script中的斜杠

  • width (默认 80) -- 仅在美化时生效,设定一个行宽让美化器尽量实现。这会影响行中文字的数量(不包括缩进)。当前本功能实现得不是非常好,但依然让美化后的代码可读性大大增强。

  • max-line-len (默认 32000) -- 最大行宽(压缩后的代码)

  • bracketize (默认 false) -- 永远在iffor,dowhilewith后面加上大括号,即使循环体只有一句。

  • semicolons (默认 true) -- 用分号分开多个声明。如果你传false,则总会另起一行,增强输出文件的可读性。(gzip前体积更小,gzip后稍大一点点)

  • preamble (默认 null) -- 如果要传的话,必须是字符串。它会被加在输出文档的前面。sourcemap会随之调整。例如可以用来插入版权信息。

  • quote_style (默认 0) -- 影响字符串的括号格式(也会影响属性名和指令)。

  • 0 -- 倾向使用双引号,字符串里还有引号的话就是单引号。

  • 1 -- 永远单引号

  • 2 -- 永远双引号

  • 3 -- 永远是本来的引号

  • keep_quoted_props (默认 false) -- 如果启用,会保留属性名的引号。

混淆选项

Mangler options

你需要传入--mangle (-m)来使启用混淆功能。支持用逗号隔开选项:

  • toplevel — 混淆在最高作用域中声明的变量名(默认disabled)

  • eval - 混淆在eval 或 with作用域出现的变量名(默认disabled)



UglifyJS中文文档

https://segmentfault.com/a/1190000008995453

工具简介:

做Web前端开发,总是要考虑页面的打开速度,如果文件数量越少、文件长度越小,就可以直接的提升网页的访问速度。UglifyJS是一个Javascript开发的通用的语法分析、代码压缩、代码优化的一个工具包。UglifyJS是基于Nodejs环境开发,支持CommonJS模块系统的任意的Javascript平台。本工具基于UglifyJS2开发。