Я пытаюсь разделить код React (созданный с помощью create-реагировать-приложение) с помощью плагина splitChunks следующим образом:
У меня есть следующая структура компонентов (JSX):
- сервисы
- сервисA
- КомпонентA1
- КомпонентA2
- подфолдер
- ...
- serviceB
- КомпонентB1
- КомпонентB2
- ...
- serviceC
- КомпонентB1
- КомпонентB2
- ...
- ...
и я хочу получить следующий вывод (сборка):
- static / js
- serviceA
- serviceA.bundle.chunkhash.js
- serviceB
- serviceB.bundle.chunkhash.js
- serviceC
- serviceC.bundle.chunkhash.js
(другие среды выполнения / сети находятся в корне / static / js)
Другое ограничение заключается в том, что компоненты загружаются динамически с помощью
const Component = lazy(() => import(componentPath));
...
<Suspense fallback={..}>Component</suspense>
"componentPath" определяется на лету (когда пользователь нажимает на значок, он открывает данную службу).
Причина этого заключается в том, что я хочу включить каждый пакет в отдельный образ Docker, на котором выполняется серверная часть.Тогда каждый образ Docker доступен благодаря маршрутизации приложения:
static/js/serviceA/ ==> js served by Docker container running service A
static/js/serviceB/ ==> js served by Docker container running service B
static/js/serviceC/ ==> js served by Docker container running service C
До сих пор я пытался:
Затем я попытался использовать плагин splitChunks со следующими параметрами:
splitChunks: {
chunks: 'all',
name: function(module) {
let serviceName = module.rawRequest ? module.rawRequest : 'default';
serviceName = serviceName.replace('../', '').replace('./', '');
serviceName = serviceName.split('/')[0];
return serviceName;
},
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
},
serviceA: {
test: /[\\/]serviceA[\\/]/,
priority: -10
},
serviceB: {
test: /[\\/]serviceB[\\/]/,
priority: -10
},
serviceC: {
test: /[\\/]serviceC[\\/]/,
priority: -10
},
}
},
Этот подход выглядит как работающий, так как все мои сервисы находятся в своих собственных каталогах.Но у меня все еще есть некоторые дополнительные каталоги в виде чисел (вероятно, идентификатор пакета), которые я, скорее всего, ожидал бы включить в стандартное значение.
Так что вопрос: мой подход правильный?