当一个文件需要一个全局 window 对象时如何 bundle/build javascript 文件

How to bundle/build javascript files when one file expects a global window object

我在 javascript 中编写了一个前端动画,其逻辑被分割成多个 javscript 文件。我想把文件基于ES6模块打包在一起,至少是我自己写的文件。

这是问题所在:

import { Webfont } from "webfontloader";

...

function animate(myText){
    WebFont.load({
        google: { families: ["Indie Flower"]},
        fontactive: function(familyName, fvd){ //This is called once font has been rendered in browser
            display(myText);
        },
    });
}

我导入了依赖模块,但是一个模块 (webfontloader) 包含 window 对象。当它在浏览器中运行时这很好,但是当我构建它并将其与 npm und rollup.js 捆绑在一起时,它会抛出错误:

   ReferenceError: window is not defined

如何在不触及作为外部库的 "webfontloader" 代码的情况下解决这个问题?

我有两个选择吗?

安装 global (https://www.npmjs.com/package/global) then use rollup-plugin-inject(https://github.com/rollup/rollup-plugin-inject) 告诉 rollup 将 window 的用法替换为 global/window.

之一
// rollup.config.js
import inject from 'rollup-plugin-inject'
export default {
    // ...
    plugins: [
        inject({
            include: 'node_modules/webfontloader/**',
            window: 'global/window'
        })
    ]