WebPack 2:用全局替换require'd模块
问题描述:
处理将在浏览器上下文中运行的一组脚本,其中某些模块(例如下划线)将作为全局模块提供。但是,我要依赖node_modules
中的require
/import
直接下划线。编译这些文件时可以将WebPack配置为依赖全局下划线实例,而不是在编译的脚本中重复该库?WebPack 2:用全局替换require'd模块
答
你要寻找的是Externals:在的WebPack
externals
配置提供的不包括在包的依赖的方式。相反,创建的捆绑包依赖于该依赖关系来存在于消费者环境中。这通常适用于图书馆开发人员,但应用程序开发人员也可以充分利用此功能。
这甚至适用于模块node_modules
,为的WebPack走整个依赖树找出在所产生的包中包含的内容。
甚至还有一个example这是专门为你的使用情况,它看起来像:
externals : {
lodash : {
commonjs: "lodash",
amd: "lodash",
root: "_" // indicates global variable
}
}
这句法被用来描述所有可能的方式,一个外部库可以是可用的。 lodash在AMD和CommonJS模块系统下可用作lodash,但在全局变量形式中以_表示。
答
如果您想要在加载软件包时依赖环境中已有的库,则需要使用externals。
module.exports = {
externals: {
underscore: "_"
}
}
对象(underscore
)的关键是你用什么来导入,和值(_
)是全局变量它会寻找。
require("underscore"); // Will return the _ variable from the global environment!