2017-05-31 4 views
0

Ich erstelle eine Angular2 Bibliothek, also möchte ich Angular2 als externe Abhängigkeit definieren.Webpack2 externals für Angular2

Lesen der Dokumentation zu diesem Thema (die knapp ist), würde ich folgendes Arbeit erwarten:

externals: { 
    'moment': 'moment', 
    '@angular/core': '@angular/core' 
} 
// or externals: ['moment', '@angular/core'] 

Aber dieses erzeugt einen Fehler für @ Winkel/Kern als webpack die folgenden ungültigen Javascript als produziert Ergebnis:

module.exports = @angular/core; 

Habe ich falsch verstehen, wie externals verwendet werden soll? Der einzige Weg, gültig Javascript zu erhalten, ist eine gültige Kennung zu verwenden, etwa so:

externals: { 
    'moment': 'moment', 
    '@angular/core': 'mySpecialLittleUnicorn' 
} 

Aber natürlich, diese Bibliothek wird es nie geben. Sollen meine Bibliotheksbenutzer einen Alias ​​'mySpecialLittleUnicorn' für '@ angular/core' oder etwas (wie?) Definieren?

Wie soll das funktionieren?

Antwort

0

Webpack unterstützt verschiedene Formate für die Verwendung von Modulen nach dem Erstellen. Um beispielsweise commonjs zu unterstützen, würden Sie dem externen Element das Präfix commonjs hinzufügen (oder Ihre eigene Bibliothek als commonjs exportieren).

output.libraryTarget: "commonjs2"

oder

externals: { '@angular/core': 'commonjs @angular/core' }

jedoch alle Modultypen zu unterstützen und die eigene Bibliothek für alle Modultypen exportieren, ist der beste Weg Äußerlichkeiten für alle Arten sowie Build erklären Ihre eigene Bibliothek für alle Arten.

Externals für alle Typen:

'@angular/core': {root: ['ng', 'core'], commonjs: '@angular/core', commonjs2: '@angular/core', amd: '@angular/core'}, 

Export Ihre eigenen Build für alle Typen: see this SO answer.