Webpack 2 дублирует модули в пакетах?

Я новичок в Webpack 2. Когда создаются мои пакеты, некоторые модули дублируются в других пакетах. Вот моя конфигурация веб-пакета:

module.exports = {
    node: {
      fs: "empty"
    },
    context: __dirname,
    entry: {
        "vendor": "./src/vendor-bundle-config.ts",
        "app" : "./src/app/app.module"
    },  
    output: {
        filename: '[name].js',
        path: './'
    }   
}

и моя конфигурация-комплект-вендора:

// Angular
import '@angular/platform-browser';
import '@angular/platform-browser-dynamic';
import '@angular/core';
import '@angular/common';
import '@angular/http';
import '@angular/router';

// RxJS
import 'rxjs';

Что бы я ни делал, rxjs (и, возможно, другие модули, я дальше не проверял) дублируются в обоих пакетах. Странно то, что я тестирую все это на очень простом проекте Angular — в нем есть AppComponent и все. Единственное место, где в настоящее время упоминается rxjs, находится в package.json и vendor-bundle-config.

Я пытался настроить CommonsChunkPlugin, но это ничего не дало. Я не уверен, что это то, что я должен изучить дальше.

РЕДАКТИРОВАТЬ: Вот конфигурация для CommonsChunkPlugin, насколько я могу ее вспомнить:

new webpack.optimize.CommonsChunkPlugin({
  name: "commons",
  filename: "commons.js",
})

Это из примера документации webpack.

Что я упускаю/делаю не так?

Спасибо.


person TimTheEnchanter    schedule 14.03.2017    source источник
comment
Показать конфигурацию CommonsChunkPlugin.   -  person wuxiandiejia    schedule 14.03.2017
comment
У меня больше нет конфигурации CommonsChunkPlugin, но я обновил сообщение выше тем, что, насколько я помню, основано на примере документации веб-пакета.   -  person TimTheEnchanter    schedule 14.03.2017


Ответы (2)


Параметр плагина name — это имя чанка, которое вы хотите отделить от записей. Поэтому измените его на vendor. Дополнительные сведения см. в разделении кода.

person wuxiandiejia    schedule 14.03.2017

Догадаться. Мне не хватало опции minChunks в моей конфигурации CommonsChunkPlugin. Для работы это должно выглядеть так:

new webpack.optimize.CommonsChunkPlugin({
  name: "commons",
  filename: "commons.js",
  minChunks: 2     <-- this is what I was missing
})
person TimTheEnchanter    schedule 14.03.2017
comment
Почему вы не используете Angular CLI? В Angualr v5 разделение кода довольно легко реализовать с помощью изменения синтаксиса пути маршрута. - person Drenai; 19.12.2017