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 .

Другие вопросы по тегам