首页 > 解决方案 > 是否可以使用 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'

是否可以在不触及全局范围的情况下使用这两个模块?

标签: npmwebpackumd

解决方案


尝试改变

  externals: [
    {
      "d3": {
        root: "d3"
      }
    }
  ]

  externals: [
    {
      "d3": {
        commonjs: "d3"
      }
    }
  ]

在文档中描述。通过设置为root,库应该可以作为全局变量使用


推荐阅读