Каков ПРАВИЛЬНЫЙ рабочий процесс для typescript, nodejs, npm, esmodule и commonjs?

Я пишу игру на холостом ходу с машинописным текстом. Возникает ситуация, когда мне приходится иметь дело с некоторой логикой вычисления больших чисел как на клиенте, так и на сервере. Клиент плохо поддерживает bigint, а сервер поддерживает. Итак, по какой-то ленивой причине я решил вырезать ту же логику, вычислить с помощью JSBI(есть плагин babel для преобразования JSBI в bigint) и экспортировать один пакет npm. Я думаю, что клиент и сервер будут использовать его в такой ситуации, и он работает.

Итак, я сделал это, и у меня есть проблема. Клиент — модуль es, сервер — commonjs. Я запустил babel для всего пакета и столкнулся с некоторыми проблемами при компиляции — некоторые варианты использования JSBI не были преобразованы из-за того, что функции вызывались глубоко и пересекались. Я сделал новый пакет под названием jsbi-extension и изменил все функции JSBI, чтобы вместо этого вызывать jsbi-extension.

Он работает после запуска babel, но у меня появились новые проблемы. Пакет должен экспортировать 2 разных кода с расширением cjs и mjs, а после babel у меня есть 2 разных .d.ts . Я не знаю, как настроить package.json для экспорта разных .d.ts с разными целями, и я думаю, что если я не хочу сделать его универсальным, может быть, для одного пакета npm должно быть 4 экспорта. Например, для bigint и cjs, bigint и mjs, JSBI и cjs, JSBI и mjs ... и я хочу знать, есть ли какой-то ПРАВИЛЬНЫЙ рабочий процесс для этой ситуации.

Расширение jsbi находится здесь https://github.com/darklinden/jsbi-extension , и, наконец, я создаю его в другой ветке, чтобы оно работало, я думаю, что это НЕПРАВИЛЬНО.

Есть ли макрос или что-то еще, напримерtype BI = ifdef bigint then bigint else (import JSBI) endifопределить для файла .d.ts?

Или есть ли ключ для package.json для определения разделенного экспорта? нравиться

      {
    "exports" : {
        ".":[
            {
                "importerHasImported" :"jsbi",
                "import-types":"...",
                "import":"...",
                "require-types":"...",
                "require":"..."
            },
            {
                "importerNotImported" :"jsbi",
                "import-types":"...",
                "import":"...",
                "require-types":"...",
                "require":"..."
            }
        ]
    }
}

0 ответов

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