使用Webpack从CDN引入React,但不包括ReactDOM

4

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

我的webpack配置有以下代码块声明“externals”,以便它不会构建这些文件(我使用CDN代替)。

webpack.config.js

...

externals: {
    react: 'React'
},

...

问题在于仅将React包含在externals中仍然会构建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未定义


但是它说它与React一起使用(https://github.com/facebook/react/tree/master/packages/react-dom),所以当您将React放入CDN时,也会包括ReactDOM。 - AlexandruB
没错,我只想将ReactDOM包含在我的捆绑包中,而不是使用CDN引用它。 - Himmel
我不理解使用情况,但我猜测将react-dom定义为自己的Webpack入口,并将其作为单独的块 - AlexandruB
react-dom 作为一个单独的块并不符合我的意图,我想将它包含在我的主要捆绑包中。 - Himmel
我的最佳猜测是:尝试为react/lib/ReactDOM添加webpack外部引用。否则,请查看https://dev59.com/RpLea4cB1Zd3GeqP5K3u?rq=1获取更多想法。另一个想法:尝试使用dedupe插件。 - Ed Staub
尝试使用dedupe插件,但没有成功,请参考上面关于将react/lib/ReactDOM添加到externals的内容。我会查看您发布的链接,谢谢。 - Himmel
1个回答

2

非常有趣的东西。令人惊讶的是,这样的捆绑包竟然还不存在。 - Himmel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接