tpack-uglify-js

2.9.1 • Public • Published

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,       // 使用分号分割语句(否则使用换行)。
    }
});

另参考 https://github.com/mishoo/UglifyJS

Package Sidebar

Install

npm i tpack-uglify-js

Weekly Downloads

7

Version

2.9.1

License

MIT

Last publish

Collaborators

  • teal