【问题标题】:Using Webpack to include React from CDN, but not ReactDOM使用 Webpack 包含来自 CDN 的 React,但不包含 ReactDOM
【发布时间】:2016-07-25 20:48:42
【问题描述】:

在我的 webpack 构建中,我想从 CDN 加载 React,但 ReactDOM,因为对于一个非常小的文件,它需要额外的往返。

我的 webpack 配置有以下代码块声明“外部”,因此它不会构建这些文件(我改为包含 CDN)。

webpack.config.js

...

externals: {
    react: 'React'
},

...

问题是 only 在外部包含 React 仍然可以构建 React,因为 ReactDOM 依赖于它。

node_modules/react-dom/index.js

module.exports = require('react/lib/ReactDOM');

'react-dom': 'ReactDOM' 添加到外部可以有效地将它们从包中删除,但我不想包含 ReactDOM CDN...

如何配置 webpack 以从 CDN 加载 React,但在我的主包中包含 ReactDOM?


注意:我使用的是 webpack 2.1.0-beta17 和 React 15.1.0。


更新 我尝试将react/lib/ReactDOM 添加到外部。

...

externals: {
    react: 'React',
    'react/lib/ReactDOM': 'commonjs react-dom'
},

...

但我收到以下错误。

require 未定义

【问题讨论】:

  • 但是它说是intended to be included with React,所以当你把 React 放在 CDN 上时,你也包含了 ReactDOM。
  • 对,我只想在我的包中包含 ReactDOM,而不是为它包含 CDN。
  • 我不理解用例,但我想将 react-dom 定义为它自己的 Webpack 条目并使其成为 separate chunk?
  • react-dom 包含为一个单独的块并不能满足我将其包含在我的主包中的意图。
  • 我最好的猜测:尝试为 react/lib/ReactDOM 添加一个 webpack 外部。否则,请查看*.com/questions/34602831/… 以获取想法。还有一个想法:试试 dedupe 插件。

标签: javascript reactjs webpack react-dom


【解决方案1】:

[不是答案,评论太大]

请参阅问题https://github.com/facebook/react/issues/5413https://github.com/facebook/react/issues/6128,如果我理解正确的话,它们主张拥有一个 React+ReactDom 的 CDN 捆绑包,它会让你的船浮起来。丹·阿布拉莫夫感觉到了,所以我充满希望。但是请注意,his comment ReactDOM 很快就会变得更大。

【讨论】:

  • 非常有趣的东西。惊讶地发现这样的捆绑包还不存在。
最近更新 更多