SplitChunksPlugin: Как объединить общих поставщиков из двух библиотек ввода в одну из них? - PullRequest
0 голосов
/ 24 февраля 2020

Я хотел бы собрать 2 оптимизированные библиотеки с веб-пакетом 4. Эти библиотеки используют тех же поставщиков.

В моем случае bundle A является обязательным и всегда будет его использовать. bundle B является дополнением к bundle A и является необязательным.

В первый раз я строю без оптимизации:

module.exports = {
    entry: {
        bundle_A: "./src/index_A.js",
        bundle_B: "./src/index_B.js"
    },
    output: {
        filename: '[name].js',
        library: '[name]',
        libraryTarget: 'umd',
        umdNamedDefine: true,
    },
}

Я получаю две библиотеки одинакового размера.

Во второй раз я строю с оптимизацией:

Теперь я хотел бы объединить все общие продавцы в библиотеке bundle_A, чтобы уменьшить размер bundle_B.

Я изменяю конфигурацию веб-пакета с помощью плагина splitChunks.

Чтобы объединить поставщиков в bundle_A, я добавляю cacheGroups с тем же именем bundle_A.

Я создаю тестовое хранилище

module.exports = {
    entry: {
        bundle_A: "./src/index_A.js",
        bundle_B: "./src/index_B.js"
    },
    output: {
        filename: '[name].js',
        library: '[name]',
        libraryTarget: 'umd',
        umdNamedDefine: true,
    },
    optimization: {
        splitChunks: {
            cacheGroups: {
                vendors: {
                  test: /[\\/]node_modules[\\/]/,
                  name: 'bundle_A',
                  chunks: 'all',
                }
            }
        }
    }
}

Я получаю bundle_A со всеми поставщиками , но при выполнении window.bundle_A undefined.

Как работает библиотека, которая работает со всеми распространенными поставщиками?

...