webpack的js压缩插件如何使用?

发布于 2022-09-06 07:35:25 字数 1000 浏览 22 评论 0

网上很多资料都是压缩混淆过的js文件,他们是用的什么工具来压缩混淆的呢?
查到过一个webpack的插件uglifyjs-webpack-plugin。但是不知道怎么使用。
根据教程一步步走,压缩混淆完之后没法使用了。
我的入口文件是这样的:

function abc(){
    console.log("abc");
}
console.log(12);
var first="first name";
console.log(first);
var lottery=(function(){
    function lottery(){
        this.name="lottery name";
    }
    return lottery;
})

压缩混淆完之后定义的变量成了一个字符,abc(),first,lottery这些自定义的方法或者变量都没有了,但是我在页面中都使用引用了这些方法。
是哪里的代码有问题呢?
我的配置代码如下:

const uglifyWebpackPlugin=require("uglifyjs-webpack-plugin");
const path=require("path")
module.exports={
    entry:"./src/index",
    output:{
        path: path.resolve(__dirname, 'dist'),
        filename: 'build.js'
    },
    plugins:[
        new uglifyWebpackPlugin(
            {
            uglifyOptions:{
                mangle:{
                    reserved:["abc","first","lottery"]
                },
                compress:true
            }
        })
    ]
}

谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

-小熊_ 2022-09-13 07:35:25

webpack中每一个文件都是模块,在文件中申明的方法名都会被压缩掉。所以你想达到在页面中直接使用这些方法要改成

window.lottery = (function(){
    function lottery(){
        this.name="lottery name";
    }
    return lottery;
})
许久 2022-09-13 07:35:25

原因不是你的reserved没生效,是因为你的compress设置,true会把子属性unused也设置为true,未被运行的代码都被删掉了。

你可以试试

compress: {
    unused: false,
}
番薯 2022-09-13 07:35:25
new webpack.optimize.UglifyJsPlugin({
    // 最紧凑的输出
    beautify: false,
    // 删除所有的注释
    comments: false,
    compress: {
        // 在UglifyJs删除没有用到的代码时不输出警告
        warnings: false,
        // 删除所有的 `console` 语句
        // 还可以兼容ie浏览器
        drop_console: true,
        // 内嵌定义了但是只用到一次的变量
        collapse_vars: true,
        // 提取出出现多次但是没有定义成变量去引用的静态值
        reduce_vars: true
    }
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文