2017-05-31 15 views
0

私はAngular2ライブラリを作成していますので、Angular2を外部依存として定義します。Angular2のWebpack2の外部

(不足している)このテーマに関する文書、私は仕事に次の期待読む:

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

しかしWebPACKのとして、以下の不正なJavaScriptを生成し、これは、@角度/コアのエラーを生成します結果:

module.exports = @angular/core; 

は私が誤解しましたexternalsを使用する必要がありますか?有効なJavaScriptを取得するための唯一の方法はそうのように、有効な識別子を使用することです:

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

しかし、明らかに、このライブラリが存在することはありません。私の図書館のユーザーは、 '@ angle/core'や何か(how?)の別名 'mySpecialLittleUnicorn'を定義することになっていますか?

これはどのように動作するはずですか。

答えて

0

Webpackは、ビルド後にモジュールを要求するためのいくつかの形式をサポートしています。たとえば、commonjsをサポートするには、接頭辞commonjsを外部に追加します(またはcommonjsとしてエクスポートする独自のライブラリを設定します)。

output.libraryTarget: "commonjs2"

または

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

しかし、すべてのモジュールタイプをサポートし、すべてのモジュールタイプのために独自のライブラリをエクスポートするには、最良の方法は、すべてのタイプの見た目だけでなく、ビルドを宣言することですすべてのタイプのあなた自身のライブラリ。すべてのタイプの

外観:

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

エクスポートすべてのタイプのための独自のビルド:see this SO answer

関連する問題