如何将单个模块代码拆分为在 webpack 中的多个入口点之间共享?

How can I code split a single module to be shared between multple entry points in webpack?

我有一个非常大、较旧的 MVC 应用程序,我们已经开始为我们的一些 TS/JS 使用 webpack。我过去曾尝试实现代码拆分,但生成的模块非常庞大且命名笨拙。整个事情非常混乱。由于与旧版浏览器的一些兼容性问题,我们最终不得不将其回滚。

我们正在努力在 React 中做更多事情,我们希望避免在整个应用程序中重复 React 库,但我们还没有完全准备好转向完整的 SPA。相反,我们目前 "splitting" 路线上的应用程序使用大量入口点文件(目前为 44 个。)

是否可以仅将 React 和 React-DOM 模块提取到一个独立的模块中?我想我们仍然需要在我们使用它的地方导入它,这样类型检查就不会崩溃。

或者我们是否以老派的方式将 React 添加到页面,并消除那些警告和错误?

TLDR:当使用多个入口点时,如何将代码拆分为仅 React 本身?

这应该有效:

https://webpack.js.org/guides/code-splitting/#prevent-duplication

 optimization: {
     splitChunks: {
       chunks: 'all'
    }
   }

我从来没有使用过这么多入口点,但将其添加到您的 webpack 配置中,它应该开箱即用,提取反应到一个名为 vendors~main(long hash).js 的块中。该页面底部是分析工具,您可以检查您的捆绑包是否有任何剩余的重复项。

编辑补充:这个更好:

https://webpack.js.org/plugins/split-chunks-plugin/#split-chunks-example-3

module.exports = {
  //...
  optimization: {
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[\/]node_modules[\/](react|react-dom)[\/]/,
          name: 'vendor',
          chunks: 'all',
        }
      }
    }
  }
};