WebPack 2:用全局代替需要&#d; d模块

时间:2016-11-29 16:08:53

标签: javascript webpack webpack-2

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

2 个答案:

答案 0 :(得分:2)

您正在寻找的是Externals

  webpack中的

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

这甚至适用于node_modules中的模块,因为webpack遍历整个依赖关系树,以确定要在结果包中包含的内容。

甚至还有example专门用于您的用例,它看起来像:

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

此语法用于描述外部库可用的所有可能方式。 lodash在AMD和CommonJS模块系统下可作为lodash使用,但以全局变量形式提供_。

答案 1 :(得分:0)

如果您想在加载捆绑包时依赖环境中已有的库,则需要使用externals

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

对象的键(underscore)是您用来导入它的键,值(_)是它要查找的全局变量。

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