有没有办法彻底破坏与vue捆绑在一起的webpack组件?
当通过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
}
}
}
}
],发布于 2019-02-13 02:19:54
这两个属性(zoom,pitch)恰好包含在reserved名称列表中,请查看UglifyJS在损坏期间内部使用的默认domprops.json文件。
tools/domprops.json中提供了一个默认的排除文件,它应该涵盖在各种浏览器中定义的大多数标准JS和DOM属性。传递--mangle-propsdomprops以禁用此功能
如果您希望保留此默认列表,则可以在插件的自定义小型化选项中执行以下任何操作:
domprops.json)并传入一个函数/筛选器,用于删除这些不需要的名称,webpack.config.js
{
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.reserved和mangle.properties.reserved之间的相似之处,因为后者可能是您在这里所需要的。看看小型化期权结构。
https://stackoverflow.com/questions/54660674
复制相似问题