WebPack 2:将 require'd 模块替换为全局模块



在一组脚本上工作,该脚本将在浏览器上下文中运行,其中某些模块(例如下划线)将作为全局模块可用。但是,我取决于node_modulesrequire/import的模块,直接强调。在编译这些文件时,是否可以配置WebPack依赖于全局下划线实例,而不是在我编译的脚本中重复该库?

您要寻找的是外部:

externals WebPack中的配置提供了一种不包括捆绑包中的依赖关系的方法。相反,创建的捆绑包依赖于该依赖性在消费者环境中存在。尽管应用程序开发人员也可以很好地利用此功能,但这通常适用于库开发人员。

这甚至适用于 node_modules中的模块,因为webpack行走 the 依赖关系树,以找出在生成的捆绑包中包含的内容。

甚至有一个专门用于您的用例的示例,看起来像:

externals : {
    lodash : {
    commonjs: "lodash",
    amd: "lodash",
    root: "_" // indicates global variable
  }
}

该语法用于描述外部库可用的所有可能方法。这里的lodash在AMD和COMPORJS模块系统下可作为lodash提供,但在全局变量形式中可用。

如果您想依靠捆绑包时已经在环境中可用的库,则需要使用外部。

module.exports = {
    externals: {
        underscore: "_"
    }
}

对象的密钥(underscore)是您用来导入的,而值(_)是它将要寻找的全局变量。

require("underscore"); // Will return the _ variable from the global environment!

最新更新