需求
封装一个自己写的js,想要混淆压缩后能够在别的项目直接调用
尝试过程
使用uglify-es6直接压缩混淆
my.js
,引入文件调用成功,无报错
但是考虑到使用场景,还是需要先转成es5,于是先转成了es5,再使用uglifyjs压缩,这个时候引用报错exports is not defined。查阅资料以后得知是bable在将es6转为es5的时候会转成CommonJS,而浏览器不能直接使用,通常还是需要用webpack等基于node的工具去打包。
ok,尝试用webpack打包,下附
webpack.config.js
,打包成功但是,在引用的时候报错了
Object(...) is not a function
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const webpack = require("webpack");
module.exports = {
mode: 'production',
optimization: {
minimizer: [
new UglifyJsPlugin({
// cache: true,
parallel: true,
uglifyOptions: {
compress: true,
mangle: true,
output: {
comments: false
}
},
sourceMap: true
})
]
},
entry: {
app: './src/index.js',
print: './src/print.js',
raphael: './src/raphael.js'
},
plugins: [
],
output: {
filename: '[name].min.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
},
]
}
};
问题
自己检查了一下,压缩后的文件里没有export的字样,是我在配置
UglifyJsPlugin
的时候还需要配置忽略哪些关键字么?我查了
uglifyjs-webpack-plugin
的文档似乎没有实际的例子,求问大神们该如何解决。。。
|