2016-04-23 3 views
2

Ich baue eine Anwendung mit BitcoinJS und habe festgestellt, dass die Verwendung der -p Flag bewirkt, dass Webpack bestimmte Teile zu zerlegen, die Fähigkeit zu brechen Transaktionen zu brechen.Wie repariere ich Webpack von Mangling mein Code in der Produktion?

Ich wurde empfohlen, noParse mit alias in der Konfig zu verwenden, die das Problem verschlimmerte (die gesamte Anwendung würde überhaupt nicht laden).

Bis jetzt habe ich keine andere Problemumgehung gefunden als die Produktion abzuschalten (was alle Arten von seltsamen Dingen in der Javascript-Datei zurücklässt, einschließlich meiner lokalen Entwicklungspfade).

Beispielprojekt hier (mit Anweisungen installieren, und wie zu reproduzieren): https://github.com/Someguy123/example-webpack-issue

EDIT/UPDATE: @bebraw eine funktionierende Lösung zur Verfügung gestellt hat, das auf dem fixed Zweig im Beispiel verfügbar ist Projekt, wenn jemand anderes es in Aktion sehen wollte.

Antwort

3

Das Problem ist, dass Uglify mangels standardmäßig zu viel in Ihrem Fall. Wie pro bitcoinjs-lib Anweisungen, müssen Sie wie folgt bestimmte Namen auszuschließen:

plugins: [ 
    new webpack.optimize.UglifyJsPlugin({ 
     mangle: { 
      except: [ 
       'Array', 'BigInteger', 'Boolean', 'Buffer', 
       'ECPair', 'Function', 'Number', 'Point' 
      ] 
     } 
    }) 
] 

Verwenden webpack statt webpack -p nach dem Plugin konfigurieren.

Es wird das resultierende Bündel ein wenig größer machen, aber es wird funktionieren.

Eine andere Alternative wäre, das Bündel separat für bitcoinjs-lib woanders zu generieren und dann stattdessen zu verbrauchen. Man müsste dort auch Mangling berücksichtigen, aber es würde dein Projekt ein wenig sauberer halten.