如何使用Webpack拆分应用程序和供应商代码

时间:2017-11-15 14:52:28

标签: reactjs webpack vendor

我正在以反应开始一个新项目 所以我有这个webpack.config.js文件应该包含2个块,一个用于应用程序代码,另一个用于供应商,基于这个例子来自webpack documentation

webpack.config.js

const webpack = require('webpack');
module.exports = {
    entry: {
        app: './src/App.jsx',
        vendor: ['react', 'react-dom', 'whatwg-fetch']
    },
    output: {
        path: __dirname + './static/',
        filename: 'app.bundle.js'
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin({
            name: 'vendor',
            filename: 'vendor.bundle.js'
        })
    ],
    module: {
        loaders: [{
            test: /.jsx$/,
            loader: 'babel-loader',
            query: {
                presets: ['react', 'es2015']
            }
        }, ]
    }
};

当我运行webpack -p时,我可以看到我的两个资产应该生成但输出目录中没有任何内容。

Webpack输出

           Asset    Size  Chunks             Chunk Names
   app.bundle.js    6 kB       0  [emitted]  app
vendor.bundle.js  108 kB       1  [emitted]  vendor
   [6] ./src/App.jsx 3.37 kB {0} [built]
   [7] ./src/IssueAdd.jsx 3.57 kB {0} [built]
   [9] ./src/IssueList.jsx 5.46 kB {0} [built]
  [10] ./src/IssueFilter.jsx 2.52 kB {0} [built]
  [20] multi react react-dom whatwg-fetch 52 bytes {1} [built]
    + 16 hidden modules

Webpack版本是3.8.1与Windows 7开发环境。 我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:4)

如果你想在输出文件夹中发出两个单独的文件首先你必须确保每次更新文件时这些文件都有新名称,其中一种方法是使用webpack中建议的缓存[chunkhash] 3.8.1 Documentation

在文件顶部包含路径,因此您的输出应该类似(您可以相应地更改它):

 var path = require('path');

 output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].[chunkhash].js'
  },

在你的插件中你可以给出名字

plugins: [
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor'
    }) 
]

您可以阅读有关Webpack 3.8.1 output-filename

的更多信息