WP5 Module Federation: совместное использование глубокого импорта
Скажем, у меня есть следующая настройка федерации модулей:
new ModuleFederationPlugin({
name: 'shell',
filename: 'shellDefinition.js',
shared: {
'my-shared-lib': { singleton: true, eager: true, requiredVersion: '^1.0.0' }
},
})
Это позволяет мне поделиться следующим импортом с пультами дистанционного управления:
import { myThing } from 'my-shared-lib';
Однако что, если я хочу поделиться глубоким импортом, например следующим?
import myThing from 'my-shared-lib/things';
Выполнение этого с помощью описанной выше настройки, похоже, создает отдельный экземпляр модуля как на хосте, так и на любых пультах дистанционного управления, что, возможно, понятно, поскольку мы технически не разделяем глубокий импорт. Однако есть ли способ заставить Модульную Федерацию сделать это?
2 ответа
Вы должны иметь возможность глубокого импорта как:
shared: {
'my-shared-lib': { singleton: true, eager: true, requiredVersion: '^1.0.0' }
'my-shared-lib/things': { singleton: true, eager: true, requiredVersion: '^1.0.0' }
}
Они по-прежнему будут двумя отдельными блоками, но будут использоваться несколькими пультами / хостами.
Webpack также обрабатывает любой путь префикса с помощью/
в конце, поэтому, если вас не волнует конкретность, вы можете использовать:
shared: {
'my-shared-lib': { singleton: true, eager: true, requiredVersion: '^1.0.0' }
'my-shared-lib/': { singleton: true, eager: true, requiredVersion: '^1.0.0' }
}
Ссылка: https://github.com/webpack/webpack/blob/main/lib/sharing/resolveMatchedConfigs.js#L77-L79 .