Как заставить веб-пакет не использовать объект окна при сборке? - PullRequest
3 голосов
/ 06 августа 2020

Я делаю библиотеку компонентов React, чтобы абстрагироваться от некоторых компонентов, которые я использую в нескольких проектах. Некоторые проекты выполняются с помощью CRA, некоторые - с помощью Gatsby, некоторые могут быть чем-то другим и т. Д. c. Я использовал фреймворк / набор инструментов Neutrino. js, поскольку он был связан на сайте документации React, но проблема, с которой я столкнулся, заключается в том, что по умолчанию все выходные файлы сборки используют объект window, что вызывает gatsby build разбить, поскольку window не существует в Node / SSR. Есть ли способ заставить Neutrino / webpack выводить пакет, который не использует окно? При поиске решения и сравнении с другими библиотеками кажется, что ESM - лучший, но я не уверен, как заставить webpack использовать его, я думаю, что в настоящее время он не поддерживается. Есть ли другой инструмент, который мне следует использовать для этого?

1 Ответ

2 голосов
/ 06 августа 2020

Добавьте конфигурацию globalObject в конфигурацию вашего веб-пакета:

output: {
    globalObject: "this",
  },

По умолчанию window

Например:

Чтобы сделать UMD сборка доступна в обоих браузерах и Node.js, установите для параметра output.globalObject значение 'this'.

module.exports = {
  // ...
  output: {
    library: 'myLib',
    libraryTarget: 'umd',
    filename: 'myLib.js',
    globalObject: 'this'
  }
};

-Из документов

...