CommonsChunkPlugin Webpack и использование "import * as"

Я довольно давно изучаю Webpack и столкнулся со странным поведением.

Как описано во введении в Webpack на angular.io, я импортирую все свои модули вендора в vendor.ts -файл, все полифилы в polyfill.ts -файл и инициализировать мое приложение в main.ts -файл. Таким образом, я добавил следующие точки входа и CommonsChunkPlugin в мою конфигурацию для Webpack:

// 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 -файл только. 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, В этом примере 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'); это работает.

В чем дело? Почему все импортные угловые работают тогда?

1 ответ

Используя тот же синтаксис в vendor.ts, что и Angular import, например: import 'webfontloader' вместо import * as похоже на работу. Все заканчивается в vendor.js, как и ожидалось. Честно говоря, я не знаю технических деталей, почему это так работает.

Другие вопросы по тегам