2016-12-28 11 views
1

私はreact + babel + webpackプロジェクトを作成しようとしています。 は動作しますが、bundle.jsファイルのサイズは950KBです。webpackプロジェクトでbundle.jsが大きすぎます

はbundle.jsはいつも大きいですか? もしそうでなければ、私はどのようにサイズを減らすのですか?

これは私のwebpack.config.jsです:

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

var BUILD_DIR = path.resolve(__dirname, 'src/client/public'); 
var APP_DIR = path.resolve(__dirname, 'src/client/app'); 

var config = { 
entry: APP_DIR + '/index.jsx', 
output: { 
    path: BUILD_DIR, 
    filename: 'bundle.js' 
}, 
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 : /\.jsx?/, 
     loader : 'babel', 
     query: 
     { 
      presets: ["es2015", 'react'] 
     } 
     } 
    ] 
} 
}; 

module.exports = config; 
+0

はい。バンドルは依存関係に基づいて拡張されます。 webpackは、インポートを使用してインクルードするすべての依存関係をパックします。別の方法として、展開中にCDNを依存関係にできるだけ使うことができ、反応コンポーネントにbabelを使用してES6をES5に変換します。 – subash

+0

それはあなたが一緒に持っているライブラリにも依存しています。また、ベンダーのlibrairiesとアプリケーションコードの間でバンドルを分割することもできます。この方法では、クライアントはベンダーをキャッシュすることができ、しばらくの間はもう一度ダウンロードする必要はありません。また、後でコンパイルを分割して高速化するWebpack dllの方法もあります(hmrなどのツールを使用している場合) – gretro

答えて

3

主にあなたの依存関係によって異なります。あなたはie8を無視して依存関係をなくし、いくつかのkBを削ることができます:

var config = { 
    entry: APP_DIR + '/index.jsx', 
    output: { 
    path: BUILD_DIR, 
    filename: 'bundle.js' 
    }, 
    plugins: [ 
    new webpack.NoErrorsPlugin(), 
    new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"' }), 
    new webpack.optimize.OccurrenceOrderPlugin(), 
    new webpack.optimize.DedupePlugin(), 
    new webpack.optimize.UglifyJsPlugin({ 
     compress: { 
     screw_ie8: true, 
     warnings: false 
     }, 
     mangle: { 
     screw_ie8: true 
     }, 
     output: { 
     comments: false, 
     screw_ie8: true 
     } 
    }) 
    ] 
}; 
-1

あなたはいつものjavascript "縮小化" ツールを使用しようとすることができます。 コードを圧縮して圧縮します。 Googleでjavascript minifyを検索してください。

2

通常、多くの依存関係が含まれているため、このサイズは珍しくありません。チャンクIDは

--optimize-dedupeを最適化します - - Minifiesは

--optimize-occurrence-orderバンドル -

--optimize-minimize話題here

もっとコードの同じ部分を重複排除:あなたのバンドルを生成するときに、次のフラグを使用してみてください。

関連する問題