tpack-uglify-js
v2.9.1
Published
TPack 插件:使用 UglifyJS 压缩或格式化 JS。
Downloads
21
Maintainers
Readme
tpack-uglify-js
TPack 插件:使用 UglifyJS 压缩或格式化 JS。
安装
$ npm install tpack-uglify-js -g
使用
压缩 JS
tpack.src("*.js").ignore("*.min.*").pipe(tpack.plugin("tpack-uglify-js"));
压缩 JS 并重命名
tpack.src("*.js").ignore("*.min.*").pipe(tpack.plugin("tpack-uglify-js")).dest("$1.min.js");
格式化 JS
tpack.src("*.js").pipe(tpack.plugin("tpack-uglify-js"), {
compress: false,
output: {
beautify: true
}
});
JS 语法检查
tpack.src("*.js").pipe(tpack.plugin("tpack-uglify-js"), {
compress: false
});
源映射(Source Map)
本插件可生成源映射,具体用法见 源映射。
配置
tpack.src("*.js").pipe(tpack.plugin("tpack-uglify-js"), {
warnings: false, // 是否显示警告。
inSourceMap: null, // 输入的源映射。[1]
outSourceMap: false, // 输出源映射。[1]
mangle: {}, // 不重命名的变量列表。如 {'except': ['$'] }。
mangleProperties: false, // 不重命名属性。
parse: {
strict: false, // 解析时默认启用严格模式。
filename: null, // 设置解析的文档名,主要用于调试。[1]
toplevel: null, // 解析所属的顶层语法树节点。
},
compress: {
sequences: true, // 将连续语句转为逗号表达式。如 a = 1; return a; → return a=1, a; 。
properties: true, // 将常量属性名转为点表达式。如 a["foo"] → a.foo。
dead_code: true, // 删除永远无法执行的代码。如 if(false) {...} 中的代码。[1]
drop_debugger: true, // 删除 “debugger” 语句。[1]
drop_console: true, // 删除 console.xx 语句。[1]
unsafe: false, // 允许不安全的优化(建议关闭)。如 new Object() → {}。具体见 [不安全代码](https://github.com/mishoo/UglifyJS2#the-unsafe-option)
conditionals: true, // 优化常量条件表达式。
comparisons: true, // 优化比较运算。如 !(a <= b) → a > b (仅当 unsafe 为 true 时优化)和 a = !b && !c && !d && !e → a=!(b||c||d||e)。
evaluate: true, // 尝试执行常量表达式。具体见 [条件编译](https://github.com/mishoo/UglifyJS2#conditional-compilation)
booleans: true, // 优化布尔运算。如 !!a ? b : c → a ? b : c。
loops: true, // 优化常量循环。如 while(true) → while(1)
unused: true, // 删除未引用的局部变量和函数。
hoist_funs: true, // 提升函数定义到函数顶部。
hoist_vars: false, // 提升变量声明到函数顶部。(由于提升会可能导致代码量增加,因此默认为 false。)
if_return: true, // 优化 return/continue 语句后的 if 语句。
join_vars: true, // 合并多个变量声明为同一个 var 语句。
cascade: true, // 尝试简化逗号表达式。如 x, x → x 和 x = something(), x → x = something()。
side_effects: true, // 删除无外部影响的函数调用。如 console.log() 删除后不会影响其它逻辑。
pure_getters: false, // 将所有属性和字段都作为无影响的函数处理。
warnings: false, // 压缩删除代码时是否显示警告。
pure_funcs: null, // 指定无影响的函数列表。如 ["Math.floor"],
keep_fargs: true, // 保留未使用的函数参数。如果设为 false,会导致依赖 Function.prototype.length 的代码出错。
keep_fnames: false, // 保留函数名。如果设为 false,会导致依赖 Function.prototype.name 的代码出错。
passes: 1, // 压缩的次数。
global_defs: { // 预设全局常量。[1]
DEBUG: false,
RELEASE: true
},
},
output: {
beautify: false, // 是否格式化代码。
indent_level: 4, // 缩进字符数。(仅当格式化代码时有效)
indent_start: 0, // 每行缩进数。(仅当格式化代码时有效)
quote_keys: false, // 使用引号定义 JSON 对象的键。
quote_style: 0, // 引号风格。0:优先使用双引号。1:全部使用单引号。2:全部使用双引号。3:保留原引号。
space_colon: true, // 在冒号后天添加一个空格。
ascii_only: false, // 编码特殊 Unicode 字符。
inline_script: false, // 编码 "</script"。
width: 80, // 允许最大列数。(仅当格式化代码时有效)
max_line_len: 32000, // 允许最大行号。(仅当压缩代码时有效)
ie_proof: true, // 输出 IE 安全代码。
source_map: null, // 是否输出源映射。
bracketize: false, // 为单行语句追加使用花括号。
preamble: null, // 在最终源码前追加的文本(一般是一段注释)。
comments: /^!|@preserve|@license|@cc_on/, // 输出注释。[1]
semicolons: true, // 使用分号分割语句(否则使用换行)。
}
});