Как с помощью Webpack с CommonsChunkPlugin разделить код по страничным бандлам?

Проект не одностраниченое приложения. Навигация между страницами реализована через window.location.href из-за большого количества страниц и тяжело яваскрипта.

Я пытаюсь сконфигурить webpack с CommonsChunkPlugin но никак не могу заставить выдялить его страничный код в отдельные файлы.

У меня есть такие файлы:

client.js - общий js
routes.js - определяет где мы находимся и подключает нужный файл из /routes/
routes/Index.js - роута главной страницы
routes/Search.js - роута страницы поиска
routes/Buying.js - роута страницы покупки

Цель разделить файлы из /routes/ по бандлам. Сейчас вебпак пихает всё в routes.js.

Последний конфиг такой:

getConfig: function(routes) {
    return {
        cache: false,
        output: {
            filename: '[name].js'
        },
        entry: {
            client: './source/js/client.js',
            routes: './source/js/routes.js',
            Index: './source/js/routes/Index.js',
            Search: './source/js/routes/Search.js',
            Buying: './source/js/routes/Buying.js',
            vendor: ['...']
        },
        module: {
            loaders: [...]
        },
        plugins: [
            new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'),
        ]
    }
}


С этим конфигом я получаю ошибку "Error: a dependency to an entry point is not allowed". Я пробовал использовать [ ] как написано тут https://github.com/webpack/webpack/issues/300 но я всё равно получаю routes.js со всеми роутами (Index, Search, Buying) и отдельные файлы Index, Search, Buying которые почти такие же как и routes.js.

Я пытался читать документацию но до сих пор не могу понять как именно мне надо написать конфиг чтобы достичь цели.
  • Вопрос задан
  • 5758 просмотров
Решения вопроса 1
@Roman_Kh
Потому что vendor не должен быть в entry, если вы хотите, чтобы он стал единой сборкой общего кода.

А вообще, лучший туториал по Webpack - https://www.youtube.com/playlist?list=PLDyvV36pndZ... - с разнообразными примерами и подробными пояснениями.
Смотрите видео с 3.1 по 3.6 - это займет 20 минут, зато все станет понятно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы