2015-07-17 12 views
8

So habe ich zwei verschiedene webpack configs ich in einem Array übergeben, die etwa wie folgt aussieht:Webpack nummerierte Stücke nicht korrekt per Config-Laden

[ 
    { 
     entry: entrypointsIE, 
     output: outputIE, 
     module: { 
      loaders: [ 
        // set of loaders that has one difference to load SCSS variables from a different location 
      ] 
     }, 
     resolveLoader: resolveLoader, 
     resolve: resolve, 
     plugins: plugins, 
     devServer: devServer 
    }, 
    { 
     entry: entrypoints, 
     output: output, 
     module: { 
      loaders: [ 
       // loaders all the same as the IE9 except one difference in sass loader  
      ] 
     }, 
     resolveLoader: resolveLoader, 
     resolve: resolve, 
     plugins: plugins, 
     devServer: devServer 
    } 
] 



output = { 
    path: '/web/dist', 
    filename: '[name].bundle.js', 
    chunkFilename: '[id].bundle.js' 
}; 

outputIE = { 
    path: '/web/dist', 
    filename: '[name].ie.bundle.js', 
    chunkFilename: '[id].ie.bundle.js' 
}; 

und

apps.forEach(function(appName, index) { 
    entrypoints[appName] = [ 'webpack/hot/dev-server', appName + '/app' ]; 
}); 

appsIE = apps; 

appsIE.forEach(function(appName, index) { 
    entrypointsIE[appName] = [ 'webpack/hot/dev-server', appName + '/app.ie' ]; 
}); 

Die Einstiegspunkte sind die genau die gleichen Dateien (und hier kommt mein Problem her). Ich habe eine Bedingung in meiner index.html, die framework.ie.js lädt, wenn es IE und framework.js erkennt, wenn es nicht tut. Dies funktioniert wie erwartet. Das Problem ist, dass die nummerierten Stücke nicht konsistent geladen werden. Manchmal sehe ich 0.bundle.js bekommen geladen, und manchmal sehe ich 0.bundle.ie.js bekommen geladen (unabhängig davon, ob framework.ie.js oder framework.js geladen wurde).

Gibt es eine Möglichkeit, den korrekten Chunk konsistent zu laden, oder gibt es eine Möglichkeit, nur sicherzustellen, dass alles, was ich brauche, in die Framework-Bundles geladen wird, ohne dass Teile vom Webpack geladen werden?

+0

Haben Sie Zugriff auf die Kopfzeilen der Seite? – Mike

+0

Ja, ich habe Zugriff auf die Header. – Evan

Antwort

5

Die Lösung gefunden. Hinzufügen:

new webpack.optimize.LimitChunkCountPlugin({maxChunks: 1} 

Macht es so mein Einstiegspunkt Brocken die einzigen waren, geschaffen und so die Logik arbeitet korrekt.

+0

Nur den Tag gerettet. Vielen Dank. – Roberto14

0

Haben Sie versucht, bedingte Kommentare zu verwenden, um die richtigen Skripts basierend auf dem Browser-Anbieter zu laden?

<!--[if IE]> 
    <script src="framework.ie.js"/> 
    <script src="0.bundle.ie.js"/> 
<![endif]--> 

<!--[if !IE]> --> 
    <script src="framework.js"/> 
    <script src="0.bundle.js"/> 
<!-- <![endif]--> 
+1

Das Problem ist, dass Webpack die nummerierten Chunks über JSONP selbst lädt. Also wird es versuchen und laden, was auch immer es will. – Evan