Redux: Webpackは巨大なbundle.jsをコンパイルします(例では)

作成日 2015年09月26日  ·  3コメント  ·  ソース: reduxjs/redux

webpackは初めてです。 なぜそれがそのような重いbundle.jsをコンパイルするのか理解できません。 あなたの例の中で最も小さなものでも、todos-with-undoは1.9 MBです! 他のより複雑な例の場合、約2.5MBです。 構成に間違いなく問題があります。
ちなみに素晴らしい仕事:)

examples infrastructure

最も参考になるコメント

それ自体は何も悪いことではありません。例は本番用に構成されていないだけです。 メンテナンスの負担を避けるために、ここでこれを行う可能性は低いです。本番構成の例については、より完全なWebpackボイラープレートを参照してください。

少なくとも、本番環境でこれを実行する必要があります。

  • devtool'eval'から'source-map'
  • webpack.DefinePluginを追加して、 process.env.NODE_ENV'production'
  • 縮小のためにwebpack.optimize.UglifyJsPluginを追加します
  • NODE_ENV=production Babelに電話するようにしてください。そうすれば、 .babelrcreact-transform有効にしません。

典型的なWebpack本番構成は次のようになります。

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

module.exports = {
  devtool: 'source-map',
  entry: [
    './src/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.DefinePlugin({
      'process.env': {
        'NODE_ENV': JSON.stringify('production')
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      compressor: {
        warnings: false
      }
    })
  ],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['babel'],
      include: path.join(__dirname, 'src')
    }]
  }
};

興味のある方は、プロダクションモードを含む定型文をご覧ください。

全てのコメント3件

それ自体は何も悪いことではありません。例は本番用に構成されていないだけです。 メンテナンスの負担を避けるために、ここでこれを行う可能性は低いです。本番構成の例については、より完全なWebpackボイラープレートを参照してください。

少なくとも、本番環境でこれを実行する必要があります。

  • devtool'eval'から'source-map'
  • webpack.DefinePluginを追加して、 process.env.NODE_ENV'production'
  • 縮小のためにwebpack.optimize.UglifyJsPluginを追加します
  • NODE_ENV=production Babelに電話するようにしてください。そうすれば、 .babelrcreact-transform有効にしません。

典型的なWebpack本番構成は次のようになります。

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

module.exports = {
  devtool: 'source-map',
  entry: [
    './src/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.DefinePlugin({
      'process.env': {
        'NODE_ENV': JSON.stringify('production')
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      compressor: {
        warnings: false
      }
    })
  ],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['babel'],
      include: path.join(__dirname, 'src')
    }]
  }
};

興味のある方は、プロダクションモードを含む定型文をご覧ください。

最善の方法はAsyncRouteです。 複数のリクエストを回避するために、コンポーネントのtemplate / css / jsをバンドルする必要がありますが、オンデマンドでロードします。

source-mapだけでなくinline-source-map devtoolとして

このページは役に立ちましたか?
0 / 5 - 0 評価