Должен ли я использовать поле браузера в package.json при создании библиотеки, которая экспортирует функцию в глобальный объект? - PullRequest
0 голосов
/ 12 декабря 2018

Я разрабатываю библиотеку javascript, и я установил поля 'browser', 'module' и 'main' в package.json, каждое из которых имеет свою точку входа.

// package.json
"main": "./dist/umd/index.js",
"browser": "./dist/browser/index.js",
"module": "./dist/esm/index.js",
...

Вв браузере, библиотека открывается в окно как глобальная функция, поэтому ее можно использовать с тегом script, например:

const x = 42;
const msg = match(x)
  .caseLessThan(0, "Negative values not allowed")
  .default(_ => `${_} items selected`);
           
alert(msg);
<script src="https://unpkg.com/x-match-expression/dist/browser/index.js"></script>

Проблема заключается в том, что при попытке использовать библиотеку в другом проекте с веб-пакетом, она по умолчанию использует точку входа «браузер», и функция не разрешается правильно, получая неопределенную ошибку во время выполнения.

import {match} from "x-match-expression";
const x = 42;
const msg = match(x) // <--- match is undefined at runtime with default webpack settings
  .caseLessThan(0, "Negative values not allowed")
  .default(_ => `${_} items selected`);

Я знаю, что поля разрешения могут быть установлены в веб-пакете, установив resol.mainFields, но это было бы нелогично для пользователей моей библиотеки, поэтому мне пришлось удалить «браузер»'точка входа в package.json, но я не знаю, есть ли лучший подход.

Должен ли я использовать поле' browser 'в package.json?Или я должен просто предоставить пакет браузера, но без ссылки на него в package.json для использования с тегом скрипта?

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