为什么拆分应用程序和供应商js代码在webpack&应对

时间:2016-01-15 08:05:27

标签: reactjs webpack

我的app.js需要做出反应。 我按照以下说明拆分应用程序并对代码做出反应:https://webpack.github.io/docs/code-splitting.html#split-app-and-vendor-code

不幸的是,webpack会生成app.bundle.js和vendors.bundle.js;两者都包含react.js库,这是不需要的。

根据上面的链接帖子,我希望webpack生成一个小的app.bundle.js(不包含反应)和一个大的vendor.js(包含反应)。

我的webpack配置文件:

var path = require('path');
var webpack = require('webpack');

module.exports = {
  entry: {
    app: "./app.js",
    vendors: ['react']
  },
  output: {
    filename: '[name].bundle.js' // Notice we use a variable
  },
  plugin: [
    new webpack.optimize.CommonsChunkPlugin(/* chunkName= */"vendors", /* filename= */"vendor.js")
  ],
  module: {
    preLoaders: [
      {
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'source-map'
      }
    ],
    loaders: [
      {
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/,
        loaders: [
          'react-hot',
          'babel?presets[]=stage-0,presets[]=react,presets[]=es2015'
        ]
      }
    ]
  }
};

我的app.js文件:

// Import React and JS
var React = require('react')

React.render(
  React.createElement('h1', null, 'Hello, world!'),
  document.getElementById('example')
);

任何建议都受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

    plugins: [
new webpack.optimize.CommonsChunkPlugin(/* chunkName= */"vendors", /* filename= */"vendor.js")
]

使用插件,而不是插件。