Я пытаюсь заставить разделение кода работать с webpack 4 (предыдущая конфигурация с webpack 3 работала правильно)
Я создал репозиторий, чтобы легко воспроизвести мою проблему: https://github.com/iamdey/RD-webpack4-code-split
Обычно я застреваю на следующей ошибке, потому что мне нужно разделение кода и babel-polyfill в комплекте поставщика:
ReferenceError: regeneratorRuntime не определен
Конфиг
Вот моя конфигурация веб-пакета:
{
entry: {
app: ['./src/index.js'],
vendor: [
'babel-polyfill',
'moment',
],
},
output: {
filename: '[name].[chunkhash].js',
chunkFilename: '[name].[chunkhash].js',
},
plugins: [
new HtmlWebpackPlugin({
chunksSortMode: (chunk1, chunk2) => {
// make sure babel-polyfill in vendors is loaded before app
const order = ['manifest', 'vendor', 'app'];
const order1 = order.indexOf(chunk1.names[0]);
const order2 = order.indexOf(chunk2.names[0]);
return order1 - order2;
},
}),
],
optimization: {
runtimeChunk: {
name: 'manifest',
},
splitChunks: {
cacheGroups: {
vendor: {
chunks: 'initial',
name: 'vendor',
test: 'vendor',
enforce: true,
},
},
},
}
}
Эта проблема
При отладке мы видим, что вендор загружается сразу после манифеста и, наконец, приложения. Но приложение выполняется до поставщика.
Если я удаляю параметры splitChunks
, как и перед манифестом, поставщик загружается, но поставщик выполняется непосредственно перед загрузкой приложения. В этом случае проблема в том, что разделение имеет плохой эффект: куски дублируются в vendor и app.
Что делать ?
Вот варианты, которые у меня есть:
- поместите полифилл в пакет приложений вместо пакета поставщика: я не хочу этого
- оставьте webpack для разделения кода: я не хочу этого, потому что в реальном мире я хочу очень долгое кэширование даже между выпусками на поставщике и держать приложение как можно меньше
- конфигурация веб-пакета неверна: скажите, пожалуйста :)
- Вероятно, это ошибка: Круто, я открою тему как можно скорее
babel-preset-env
. Что не так с добавлениемbabel-polyfill
в конфигурацию веб-пакета? Однако, если вам это не нравится, поместите толькоbabel-regenerator-runtime
, посмотрите здесь: stackoverflow.com/a/36590887/3233796 - person proti   schedule 27.04.2018