如何在 vite 或 rollup 中保留全局变量名?(窗口.FB)

MLy*_*yck 5 javascript facebook rollup node.js vite

我正在尝试在我的应用程序中设置“使用 facebook 登录”功能。

一切都在本地运行良好,或者如果我不缩小我的包。

然而,当我缩小捆绑输出时,有一个全局函数恰好被缩小为FB( window.FB),这完全破坏了 facebook SDK。

Facebook 不提供任何使用任何其他变量名称的方法。因此,我试图弄清楚如何“保留”或防止我的捆绑程序 viteJS / Rollup 将另一个全局函数名称缩小为FB.

正在缩小的全局函数来自 nodejs,并且可能是通过某个 npm 包导入的,但我不确定是哪一个。(即使我能找到它,我使用它也是有原因的,并且可能没有好的替代方案)。

这是保存在全局窗口上并缩小为“FB”的随机nodejs函数: https ://github.com/nodejs/node/blob/4b6e4c1eb110e0be671ec5972bf280d2bf3892d8/lib/_stream_read.js#L497

如何防止window.FB全局变量名被该函数占用?(当然要打开 minify)。

我尝试设置build.outputs.globals.FB为“TEST”,并window.FB在我的 index.ts 文件中进行定义,看看它是否会强制它不使用相同的名称进行缩小。但这似乎并不影响捆绑器。

小智 -1

在开发应该在另一个网站上使用的自定义库时,我设法在vite.config.js文件中实现了这种禁用缩小:

export default defineConfig({
    plugins: [
        // your plugins goes here...
    ],
    build: {
        minify: false, // <-- this is the important part
        lib: {
            entry: resolve(__dirname, 'src/index.tsx'),
            name: 'my-lib',
            fileName: 'lib-file',
            formats: ['umd'] // <-- I used 'umd' here as a precaution measure, to make it possible to use the lib in every browser
        }
    }
});

Run Code Online (Sandbox Code Playgroud)