Точка входа в общий чанк webpack

В моей конфигурации веб-пакета есть общий фрагмент, который используется несколькими точками входа. В дополнение к содержанию кода, используемого несколькими точками входа, я бы хотел, чтобы это также вызывало функцию при загрузке.

Я попытался создать общую точку входа с тем же именем, что и у чанка, но хотя я вижу содержимое общего файла в сгенерированном выводе, он не работает под нагрузкой.

Я предполагаю, что это из-за следующего, из документации splitChunksPlugin :

Если splitChunks.name соответствует имени точки входа, точка входа будет удалена.

Есть ли способ обойти это, чтобы общий фрагмент запускал что-то под нагрузкой?

запись моей конфигурации webpack:

entry: {
    common: './src/entryPoints/common.tsx',
    entry1 './src/entryPoints/entry1.tsx',
    entry2: './src/entryPoints/entry2.tsx'
}

и его optimization.splitChunks:

splitChunks: {
    cacheGroups: {
        common: {
            name: 'common',
            chunks: 'all',
            minChunks: 2,
            priority: 1,
            enforce: true
        },
        vendors: {
            test: /[\\/]node_modules[\\/]/,
            name: 'vendor',
            chunks: 'all',
            priority: 3,
        }
    }
}

В целях тестирования common.tsx содержит только:

import '../misc/polyfills';

console.log('COMMON ENTRY POINT');

Заранее спасибо.


person FTWinston    schedule 19.11.2020    source источник


Ответы (1)


В отсутствие лучшего решения я в настоящее время решаю эту проблему, изменяя объект записи, как показано ниже:

entry: {
    entry1: [
        './src/entryPoints/common.tsx',
        './src/entryPoints/entry1.tsx'
    ]
    entry2: [
        './src/entryPoints/common.tsx',
        './src/entryPoints/entry2.tsx'
    ]
}

В показанном примере это приводит к тому, что зарегистрированное сообщение отображается на странице, загружающей любую точку входа. Само сообщение содержится в общем чанке, по желанию.

Однако, если на одной странице загружено несколько точек входа, она отображается дважды, а это означает, что реальный код должен будет проверить, не выполнялся ли он ранее. Это далеко не идеально, но при необходимости сойдет.

person FTWinston    schedule 20.11.2020