是否可以使用webpack单独导入捆绑的webpack和库?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以使用webpack单独导入捆绑的webpack和库?相关的知识,希望对你有一定的参考价值。
我正在尝试构建一个使用d3的模块,但我不想将d3与该模块捆绑在一起,至关重要的是,我不想将d3绑定到窗口。该模块将安装在另一个项目上,其中npm作为git依赖项。在模块上,我有一个这样的设置:
output: {
path: path.resolve(__dirname, '../dist'),
filename: '[name].min.js',
libraryTarget: 'umd',
umdNamedDefine: true
},
externals: [
{
"d3": {
root: "d3"
}
}
]
在项目中,它安装到我想要的东西:
import d3 from 'd3'
import example from 'example'
但是,这只有在我这样做时才有效:
import d3 from 'd3'
window.d3=d3
import example from 'example'
是否可以在不涉及全球范围的情况下使用这两个模块?
答案
尝试改变
externals: [
{
"d3": {
root: "d3"
}
}
]
至
externals: [
{
"d3": {
commonjs: "d3"
}
}
]
Descried in the doc。通过设置为root
,该库应该可用作全局变量
另一答案
因为这两个模块是分开存在的,所以每个模块都有自己的闭包。共享第三个依赖关系的唯一地方是两个传统全局范围之外的范围。您可以练习依赖注入。
所以,而不是
module.exports = function do_a_thing() {
// use d3 here
}
你做
module.exports = function do_a_thing_generator(d3) {
return function do_a_thing() {
// use d3 here
}
}
然后,最终
import d3 from 'd3'
import exampleInit from 'example'
const example = exampleInit(d3)
以上是关于是否可以使用webpack单独导入捆绑的webpack和库?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 TypeScript 导入中指定 webpack 加载器?
如何使用`dependOn`从主入口点捆绑单独的应用程序文件?
webpack 可以在不需要或导入的情况下捆绑 js 文件吗? Q2:为啥需要图表?
无法让 webpack require.ensure 分块方法与 react-router 一起使用并生成单独的捆绑文件