webpack 混淆压缩文件后不能引用 并报错 Object(...) is not a function

需求

封装一个自己写的js,想要混淆压缩后能够在别的项目直接调用

尝试过程

  1. 使用uglify-es6直接压缩混淆my.js,引入文件调用成功,无报错
  2. 但是考虑到使用场景,还是需要先转成es5,于是先转成了es5,再使用uglifyjs压缩,这个时候引用报错exports is not defined。查阅资料以后得知是bable在将es6转为es5的时候会转成CommonJS,而浏览器不能直接使用,通常还是需要用webpack等基于node的工具去打包。
  3. 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的文档似乎没有实际的例子,求问大神们该如何解决。。。

阅读 4.3k
1 个回答
新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进