2017-02-13 2 views
1

Ich habe Probleme beim Einrichten von Webpack, um meine App ordnungsgemäß zu verkleinern. Ich erstelle, um JS-Dateien zu trennen, eine vendor.js (Bibliotheken) und eine main.js (meine Anwendung). Ich habe nach meinem Problem gesucht und gesucht und finde anscheinend keine angemessene Lösung.

webpack.config.jsWebpack + eckig 1.x + Schluck + Verkleinern

var webpack = require("webpack"); 
var ngAnnotatePlugin = require('ng-annotate-webpack-plugin'); 

let vendors = [ 
    'angular', 
    'lodash', 
    'moment', 
    'angular-ui-router', 
    'angular-loading-bar', 
    'angular-filter', 
    'angular-animate' 
]; 

module.exports = { 
    entry: { 
    app: './halo/app.js', 
    vendor: vendors 
    }, 
    output: { 
    filename: './build/main.js' 
    }, 
    plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor", 
     filename:"./build/vendor.js" 
    }), 
    new ngAnnotatePlugin({ 
     add: true 
    }), 
    new webpack.optimize.UglifyJsPlugin() 
    ], 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     exclude: /(node_modules)/, 
     loader: 'babel-loader', 
     query: { 
      presets: ['es2015'] 
     } 
     } 
    ] 
    } 
}; 

Mein Problem ist, ohne minification, die App funktioniert gut. Wenn ich die Anwendung und den Anbieter verkleinere, scheint es nicht zu funktionieren. Ich bekomme unbekannte Providerfehler.
Ich habe über Mangeln gelesen, aber das scheint mein Problem auch nicht zu beheben (es sei denn, ich mache es nicht richtig). Ich mache auch ngInject an den richtigen Stellen.
Ich fand diese Config snippit innerhalb optimize.UglifyJsPlugin ({}) jemand setzen

{ 
    beautify: false, // Don't beautify output 
    comments: false, // Eliminate comments 
    // Compression specific options 
    compress: { 
    warnings: false, 
    drop_console: true 
    }, 
    mangle: { 
    except: ['$'], // Don't mangle $ 
    screw_ie8 : true, // Don't care about IE8 
    keep_fnames: true // Don't mangle function names 
    } 
} 

kann etwas Licht in diese Schuppen bitte?

+0

Welche Anbieter versagen? Wie sehen Ihre Controller aus? – garethb

+0

nach dem Debuggen für eine Weile, die Controller sind in Ordnung, ng-Annotate ist die Injektion Abhängigkeiten richtig, aber ich bekomme einen Fehler, dass Anbieter 'a' ist nicht verfügbar. nicht viel Hilfe, aber ich bin immer noch dabei herauszufinden –

+0

das Problem scheint mit der mangle Option zu sein. –

Antwort

0

Kann es nicht als Kommentare, da ich weniger Ruf habe.

Sie können strict-di statt ng-annotate verwenden. Löse alle Probleme, die von strict-di gemeldet wurden, und verwende dann die Minification mit Mangling on.

strict-di zwingt Sie, alle Ihre Abhängigkeiten im Array-Format innerhalb des Codes zu definieren. read this answer about it

+0

das Problem ist nicht die Injektion von Abhängigkeiten. Webpack fügt die Abhängigkeiten ordnungsgemäß ein. Ich sehe es immer, wenn es die Ausgabe js-Datei –

+0

baut, dann wäre das andere Problem meist mit 'window.angular' zu tun wäre undefiniert, überprüfen Sie, ob durch Ausführen der Anwendung und dann dev-Tools Konsole Registerkarte –

Verwandte Themen