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