![](/img/trans.png)
[英]How to fix 'TypeError: Cannot read property 'minify' of undefined' in terser-webpack-plugin when building a new Vue CLI 3 project?
[英]More extensive mangling terser-webpack-plugin?
有没有办法彻底解决与webpack
捆绑在一起的vue
组件?
当通过将terser-webpack-plugin
的mangle.properties
设置为true
来应用重整时,并非所有属性名都被重整,例如:
location: {
lng: -.134281,
lat:51.513508,
zoom:13,
pitch:1,
bearing:60
}
变成
location:{
k:-.134281,
M:51.513508,
zoom:13,
pitch:1,
V:60
}
根据要求:Webpack配置文件的相关部分,在这种情况下,默认的vie-cli
配置以及手动添加的mangle.properties
项目:
minimizer: [
{
options: {
test: /\.m?js(\?.*)?$/i,
chunkFilter: () => true,
warningsFilter: () => true,
extractComments: false,
sourceMap: false,
cache: true,
cacheKeys: defaultCacheKeys => defaultCacheKeys,
parallel: true,
include: undefined,
exclude: undefined,
minify: undefined,
terserOptions: {
output: {
comments: /^\**!|@preserve|@license|@cc_on/i
},
compress: {
arrows: false,
collapse_vars: false,
comparisons: false,
computed_props: false,
hoist_funs: false,
hoist_props: false,
hoist_vars: false,
inline: false,
loops: false,
negate_iife: false,
properties: false,
reduce_funcs: false,
reduce_vars: false,
switches: false,
toplevel: false,
typeofs: false,
booleans: true,
if_return: true,
sequences: true,
unused: true,
conditionals: true,
dead_code: true,
evaluate: true
},
mangle: {
safari10: true,
properties: true
}
}
}
}
],
碰巧这两个属性( zoom
, pitch
)被包括在reserved
名称列表中,看看这个默认的domprops.json
文件,UglifyJS在处理时会在内部使用它。
tools/domprops.json
提供了一个默认排除文件,该文件应涵盖在各种浏览器中定义的大多数标准JS和DOM属性。 传递--mangle-props
domprops禁用此功能
如果您想保留此默认列表,则可以在插件的自定义minify选项中执行以下任一操作:
domprops.json
),并传入一个函数/过滤器以删除那些不需要的名称, {
optimization: {
minimizer: [
new TerserPlugin({
minify(file, sourceMap) {
const uglifyJsOptions = {
mangle: {
properties: {
reserved: require('your_custom_list')
}
// Or filter them
properties: {
reserved: require('uglify-js/tools/domprops.json')
.filter(name => ![
'zoom',
'pitch'
]
.includes(name))
}
}
};
return require('uglify-js').minify(file, uglifyJsOptions);
},
}),
],
},
}
另外,在执行此mangle.properties.reserved
时,请注意mangle.reserved
和mangle.properties.reserved
之间的相似之处,因为后者可能正是您所需要的。 查看最小化选项结构 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.