2016-05-05 16 views
0

Ich bin ziemlich neu in der Verwendung von Webpack und versuche, meine React-App in ES6 in eine akzeptable Produktionsgröße umzusetzen. Die Ausgabedatei ist immer noch viel zu groß und auch React gibt immer noch Warnungen aus (hauptsächlich über Produktionsdateien).App-Produktion mit Webpack reaktivieren

Kann mir jemand bei der Fehlersuche helfen, was in meiner Konfigurationsdatei aktualisiert werden sollte?

Dies ist, was ich derzeit habe.

var webpack = require('webpack'); 
var PROD = JSON.parse(process.env.PROD_ENV || '0'); 

module.exports = { 
    entry: "./app/App.js", 
    output: { 
    filename: "public/bundle.js" 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.jsx?$/, 
     exclude: /node_modules/, 
     loader: 'babel', 
     query: { 
      presets: ['react', 'es2015'] 
     } 
     } 
    ] 
    }, 
    plugins: PROD ? [ 
    new webpack.optimize.UglifyJsPlugin({ 
     compress: { warnings: true } 
    }) 
    ] : [] 
} 
+0

Es gibt viele kleine Verbesserungen, die Sie tun könnten, zu viele für eine einzige Antwort vielleicht. Ich habe über das Thema [hier] geschrieben (http://survivejs.com/webpack/building-with-webpack/). Ich denke, nur 'process.env.NODE_ENV' über' DefinePlugin' auf 'production' zu setzen, wird ziemlich helfen. Sie könnten auch [reactive-lite oder so] in Betracht ziehen (http://survivejs.com/webpack/advanced-techniques/configuring-react/). –

+0

Ich habe es aufgegeben, meinen Kopf um die Webpack-Konfiguration zu legen und habe gerade angefangen, [hjs-webpack] (https://github.com/HenrikJoreteg/hjs-webpack) zu verwenden, was all die Dinge erledigt und mir erlaubt, meine Zeit damit zu verbringen, Code zu schreiben :) – ivarni

Antwort

1

Hier ist meine Liste von Plugins für die Produktion baut: Außerdem

plugins: [ 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new webpack.optimize.DedupePlugin(), 
    new webpack.DefinePlugin({ 
    'process.env': { 
     'NODE_ENV': JSON.stringify('production') 
    } 
    }), 
    new webpack.optimize.UglifyJsPlugin({ 
    minimize: true, 
    compress: { 
     unused: true, 
     dead_code: true, 
     warnings: false, 
     screw_ie8: true 
    }, 
    compressor: { 
     warnings: false 
    } 
    }) 
] 

, wenn Sie feststellen, dass die Anwendung noch ziemlich groß ist, habe, was ich verwendet der Analysator Webpack Bündelgröße ist (npm.js link). Es zeigt Ihnen die Liste der verwendeten Abhängigkeiten sortiert nach Größe, es hat mir wirklich geholfen, Dinge zu analysieren und wegzuwerfen, die ich eigentlich nicht brauchte.

+0

Danke! Habe es auf 350k (was immer noch ein wenig groß, aber viel besser). Ich werde den Größenanalysator ausprobieren und sehen, ob es mir hilft, die Anständigkeit zu priorisieren. – Mattador