Можно ли совместно использовать состояние модуля для «внешней» зависимости в веб-пакете между библиотекой и потребляющим проектом? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть проект машинописного текста, который создает пакет umd с помощью веб-пакета, это проект библиотеки. Конфигурация веб-пакета имеет среди прочего (соответствующие части):

webpack.config.js (основная библиотека проекта)

   output: {
      filename: mode === "production" ? "[name].min.js" : "[name].js",
      path: path.resolve(__dirname, "dist"),
      libraryTarget: "umd",
      library: "core-library"
    },

    externals: {
      "typescript-logging": "typescript-logging"
    }

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

Потребительский проект использует этот проект и обеспечивает ведение журнала сценариев в зависимостях package.json. В этом проекте есть шутник.

Что я ожидал бы, так это то, что это состояние является общим для ведения журналов ввода текста (средства ведения журнала / категории, используемые в core-library и проекте-потребителе). Однако я могу создать одну и ту же категорию (регистратор с одинаковым именем) дважды как в основной библиотеке, так и в проекте-потребителе (это не будет разрешено, если между ними будет разделено состояние).

Я бы ожидал, что из-за части "externals" в веб-пакете, что запись в журнал машинописного текста будет существовать только один раз, но, похоже, он будет загружен дважды (один раз внутри библиотеки и один раз внутри потребительского проекта).

Обратите внимание, что тест выполняется с помощью jest (npx jest).

Это ожидаемое поведение (или, возможно, нет)? Может кто-нибудь объяснить, как можно добиться того, чего я хочу, чтобы в этом случае было только одно состояние для кода регистрации машинописного текста.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...