Exclude react from webpack bundle

后端 未结 3 1272
终归单人心
终归单人心 2020-12-14 06:33

I\'m trying to exclude react from my bundle which is generated by webpack. Reason being, we have a global version of react available on the page so I\'ll be using that.

相关标签:
3条回答
  • 2020-12-14 06:46

    I had the same problem as you did. Was stuck for one night, found the answer, react-dom requires react/lib/ReactDOM, which still includes react in the bundle. Solution looks like this:

    externals: {
     'react': 'react', // Case matters here 
     'react-dom' : 'reactDOM' // Case matters here 
    }
    

    Then add react-dom to the script tag in your page.

    0 讨论(0)
  • 2020-12-14 06:52

    You can just create multiple entries to separate react from your application bundle. You can for example do the following, using the webpack CommonsChunkPlugin :

    module.exports = {
    entry: {
        "app": "your app entry file",
        "react" : "react"
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin("react", "react.bundle.js")
       ]
    }
    
    0 讨论(0)
  • 2020-12-14 07:09

    webpack config:

    externals: {
        'react': 'React',
        'react-dom': 'ReactDOM',
        'react-router': 'ReactRouter'
    }
    

    add these to the bottom of index.html body.

    <script src="http://cdn.bootcss.com/react/15.4.1/react.js"></script>
    <script src="http://cdn.bootcss.com/react/15.4.1/react-dom.js"></script>
    <script src="http://cdn.bootcss.com/react-router/2.8.1/ReactRouter.js"></script>
    

    and, in your entry file, maybe index.js:

    var React = require('react');
    var ReactDOM = require('react-dom');
    var ReactRouter = require('react-router');
    
    const App = () => {
        return <div>
            webpack externals
        </div>
    };
    
    ReactDOM.render(
        <App/>,
        document.getElementById('container')
    );
    
    0 讨论(0)
提交回复
热议问题