gpt4 book ai didi

javascript - 如何提高 UglifyJsPlugin 的性能

转载 作者:行者123 更新时间:2023-12-03 03:53:49 24 4
gpt4 key购买 nike

在没有 UglifyJsPlugin 的情况下重建一个复杂的模块大约需要 25 秒,而在没有 UglifyJsPlugin 的情况下则需要 1 分钟多一点。平均而言,完整的构建花费 60-90% 的执行时间在 UglifyJsPlugin 中,我想知道我是否做错了什么,或者这就是事实。

使用:节点8.1.4npm 5.2.0网页包 3.2.0uglifyjs-webpack-插件 0.4.6uglify-js:2.8.29

选项:

const UGLIFYJS_OPTIONS = {
compress: {
sequences: true, // join consecutive simple statements using the comma operator
properties: true, // rewrite property access using the dot notation, for example foo["bar"] ? foo.bar
dead_code: true, // remove unreachable code
drop_debugger: true, // remove debugger; statements
unsafe: false, // apply "unsafe" transformations
conditionals: true, // apply optimizations for if-s and conditional expressions
comparisons: true, // apply certain optimizations to binary nodes
evaluate: true, // attempt to evaluate constant expressions
booleans: true, // various optimizations for boolean context
loops: true, // optimizations for do, while and for loops when we can statically determine the condition
unused: true, // drop unreferenced functions and variables
hoist_funs: true, // hoist function declarations
hoist_vars: false, // hoist var declarations (this is false by default because it seems to increase the size of the output in general)
if_return: true, // optimizations for if/return and if/continue
join_vars: true, // join consecutive var statements
cascade: true, // small optimization for sequences, transform x, x into x and x = something(), x into x = something()
collapse_vars: false, // Collapse single-use var and const definitions when possible.
warnings: false, // display warnings when dropping unreachable code or unused declarations etc.
negate_iife: true, // negate "Immediately-Called Function Expressions" where the return value is discarded, to avoid the parens that the code generator would insert.
pure_getters: false, // If you pass true for this, UglifyJS will assume that object property access (e.g. foo.bar or foo["bar"]) doesn't have any side effects.
pure_funcs: null, // You can pass an array of names and UglifyJS will assume that those functions do not produce side effects.
drop_console: false, // Pass true to discard calls to console.* functions.
keep_fargs: true, // Prevents the compressor from discarding unused function arguments. You need this for code which relies on Function.length.
keep_fnames: false // Pass true to prevent the compressor from mangling/discarding function names. Useful for code relying on Function.prototype.name.
},
sourceMap: true,
output: {
comments: function (node/*: any*/, comment/*: any*/) {
if (comment.type === 'comment2') {
// multiline comment
return /@preserve/i.test(comment.value);
}

return false;
}
}
};

最佳答案

禁用compress并仅启用mangle以非常快速地缩小文件大小并保持可接受的文件大小。

参见:https://github.com/mishoo/UglifyJS2#uglify-fast-minify-mode

关于javascript - 如何提高 UglifyJsPlugin 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45051094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com