私はかなり長い間 Webpack を学んでいますが、奇妙な動作に遭遇しました。
angular.io のWebpack Introduction で説明されているように、
すべてのベンダー モジュールをvendor.ts
-file にインポートし、すべてのポリフィルを -file にインポートし、polyfill.ts
-file 内でアプリを初期化していますmain.ts
。したがって、Webpack の構成に次のエントリ ポイントと CommonsChunkPlugin を追加しました。
// webpack.config.js -->
entry: {
'polyfill': './src/polyfill.ts',
'vendor': './src/vendor.ts',
'app': './src/main.ts'
}
// ...
new Webpack.optimize.CommonsChunkPlugin({
name: ['app', 'vendor', 'polyfill']
})
したがって、Webpack はそれを認識しvendor.ts
、app.ts
共通のモジュールを使用して、それをvendor.js
-file のみに追加する必要があります。-file は次のvendor.ts
ようになります。
// vendor.ts -->
// Angular 2.
import '@angular/platform-browser';
// ...
import '@angular/router';
// RxJS.
import 'rxjs';
// Web Font Loader.
import * as WebFont from 'webfontloader';
// Font Awesome.
import '../node_modules/font-awesome/css/font-awesome.css';
残念ながら、この動作は、 経由でインポートしたすべてのモジュールで期待どおりに機能しますが、 経由import MODULE
でインポートしたモジュールでは機能しませんimport * as ALIAS from MODULE
。この例では、 -fileとの依存関係も共有する必要がありますが、 -module もそこにインポートするため、そこにwebfontloader
書き込まれます。app.js
vendor.ts
// app.ts -->
// Initialize Angular.
platformBrowserDynamic().bootstrapModule(AppModule);
// Load Fonts.
WebFont.load({
google: {
families: ['Lato:400,700']
}
});
私が変更import * as WebFont from 'webfontloader';
すると、let WebFont = require('webfontloader');
それは機能します。
どうしたの?それでは、角度のすべてのインポートが機能するのはなぜですか?