如何让 Webpack 需要根 node_module 而不是子包?

How to let Webpack require a root node_module instead of an child package?

我已经通过 npm 安装了 backbone 和 backbone.babysitter。当我像这样在我的脚本中使用 backbone 时: import Backbone from "backbone"; 它加载安装的 backbone 版本 1.2.1。在我想使用 backbone.babysitter 之前,它工作正常。当 backbone.babysitter 加载时,它需要将属性添加到 backbone 本身。但是 backbone.babysitter 的包在他自己的 node_modules 文件夹中导入了自己的 backbone 作为依赖项,这个 backbone 在 1.2.0 上。所以它将他的方法附加到我正在使用的不同 backbone。

我如何强制 Webpack 为 backbone.babysitter 要求根 node_modules 文件夹中的 backbone?

您可以使用 NormalModuleReplacementPlugin 将所有 require('backbone') 重新连接到根 backbone 模块。

plugins: [
  new webpack.NormalModuleReplacementPlugin(/^backbone$/, require.resolve('backbone')),
],

找到一个workaround here

module.exports = {
  resolve: {
    alias: {
      'backbone': require.resolve('backbone')
    }
  }
}