output.filename: './dist/main.js'
на:output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
}
publicPath: '/dist/'
на:contentBase: path.resolve(__dirname, 'dist')
new ExtractTextPlugin('[name].css')
, output.path уже указывает, что надо выгружать все в dist