0

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

4

2 回答 2

2

您正在寻找的是Externals

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

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

甚至还有一个专门针对您的用例的示例,它看起来像:

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

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

于 2016-11-29T16:14:01.337 回答
0

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

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

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

require("underscore"); // Will return the _ variable from the global environment!
于 2016-11-29T16:13:48.723 回答