Javascript 如何将npm包与webpack捆绑并作为对象公开?

Javascript 如何将npm包与webpack捆绑并作为对象公开?,javascript,npm,webpack,webpack-2,Javascript,Npm,Webpack,Webpack 2,实际上我不确定这是否可行,但我正在尝试的是使用一些NPM包,使用Webpack将它们捆绑在一起,并将它们作为一个对象公开,其中每个包都是一个属性 例如,如果我想要捆绑react和react dom,那么它将提供如下对象: { 'react': /* react code */, 'react-dom': /* react-dom code */ } 我当前的配置是: module.exports = { entry: [ 'react', 'react-dom' ],

实际上我不确定这是否可行,但我正在尝试的是使用一些NPM包,使用Webpack将它们捆绑在一起,并将它们作为一个对象公开,其中每个包都是一个属性

例如,如果我想要捆绑
react
react dom
,那么它将提供如下对象:

{
    'react': /* react code */,
    'react-dom': /* react-dom code */
}
我当前的配置是:

module.exports = {
  entry: [ 'react', 'react-dom' ],
  output: {
    path: __dirname + '/public',
    publicPath: 'http://localhost:8081/public/',
    filename: 'bundle.js',
    libraryTarget: 'umd',
  }
};
这似乎在某种程度上起作用,因为它确实返回了一个对象,但它返回的对象是最后一个
条目
包,因此在本例中,该对象包含所有
react dom
的方法

如果我将
条目
数组的顺序更改为
['react dom','react']
,那么只有
react
方法才会被公开

这个想法是导出对象,这样我就可以使用两个包方法的属性,如
react.Component
react.PureComponent

我也尝试过使用
公开加载程序
,但这会产生与上面相同的结果,除非配置不正确


关于如何正确配置webpack以实现此目的,您有什么想法吗?

如果我正确理解您想要做什么,您可以使用以下结构设置一个捆绑源代码.js:

exports.react = require('react');
exports['react-dom'] = require('react-dom');
exports.anyModule = require('anyModule');
然后将
bundle source.js
设置为webpack配置的入口点:

module.exports = {
  entry: [ '...path-to...bundle-source.js' ],
  output: {
    path: __dirname + '/public',
    publicPath: 'http://localhost:8081/public/',
    filename: 'bundle.js',
    libraryTarget: 'umd',
  }
};

这个很好用…我昨天试了一个变种,但没用。非常感谢你。。。