在一组脚本上工作,该脚本将在浏览器上下文中运行,其中某些模块(例如下划线)将作为全局模块可用。但是,我取决于node_modules
中require
/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!