You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Vite压缩JS后函数名被修改,如何保留原函数名?

Vite压缩JS时保留指定函数名的配置方案

Vite生产构建时的混淆压缩会缩短函数名,导致外部无法调用目标函数,你可以通过以下两种方式解决:

方式一:配置Vite的压缩规则(推荐)

修改Vite配置文件,添加build配置项,通过terserOptions指定需要保留的函数名:

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/admin.css', 'resources/js/admin.js'],
            refresh: false,
        }),
    ],
    build: {
        minify: 'terser',
        terserOptions: {
            mangle: {
                // 把需要保留的函数名列在这里,多个用逗号分隔
                reserved: ['targetFunc', 'anotherPublicFunc']
            }
        }
    }
});
  • 这里切换到terser是因为它的混淆规则配置更灵活,Vite默认用esbuild,如果想继续用esbuild,可以配置build.esbuild.minifyOptions,但terser对保留特定标识符的支持更成熟。
  • 只保留需要对外暴露的函数名,避免关闭全部混淆导致打包体积过大。

方式二:显式挂载全局函数

如果你的函数需要全局调用,在JS代码里把它挂载到window对象上:

// 定义你的函数
function targetFunc() {
    // 函数逻辑
}

// 挂载到window
window.targetFunc = targetFunc;

这种方式下,即便函数名被混淆,通过window.targetFunc依然能正常调用。

内容的提问来源于stack exchange,提问作者mehran_s_w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:17:39