Webpack-全局库名称已存在时如何重用?

时间:2019-03-07 02:38:26

标签: javascript webpack bundle webpack-4 monorepo

晚上好!

我有一个带有多个软件包的monorepo,其中每个软件包都使用Webpack独立捆绑。

在成为monorepo之前,我只有一个捆绑文件,并且可以通过浏览器中的output.library属性通过全局变量使用它。现在,我有了以下内容,因为我有多个条目:

output: {
    library: "SC",
    // export itself to UMD format
    libraryTarget: "umd",
    umdNamedDefine: true,
    filename: "[name]/dist/organization-[name].js",
    // fix for https://github.com/webpack/webpack/issues/6525
    globalObject: `(typeof self !== 'undefined' ? self : this)`
  }

问题是,如果我对每个软件包使用相同的配置,并且使用 script 标签将多个配置导入到浏览器,则实际上只有最新的脚本会之所以可用,是因为它实际上每次都在重新创建全局变量。

是否可以重用它?也许我可以在这里使用更好的约定。 例如,在node中,我使用捆绑软件名称导入它们中的每一个,但是在浏览器中,我觉得它们应该都在同一个全局变量下。

谢谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

正如我在webpack的repository上创建的问题中所述,解决方案是使用以下内容: library: ["MyLibrary", "[name]"]

这将使所有程序包在相同的全局变量MyLibrary下可用,但由它们各自的条目(即MyLibrary.entryOneMyLibrary.entryTwo)隔开。