Способ предоставления макетов для неподдерживаемых операционных систем для лучшего опыта разработчика в node.js - PullRequest
0 голосов
/ 27 января 2020

Я поддерживаю простой маленький нативный Node.js пакет . Это действительно полезно только на linux, так как оно зависит от некоторых собственных функций POSIX c.

Из-за этого ограничения я использовал поле os package.json, чтобы указать, что это не должен быть установлен на win32 машинах.

Как насчет того, когда я хочу разрабатывать этот пакет как зависимость (и не run / test) на машине Windows? Npm не хочет устанавливать пакет. Я мог бы попытаться заставить Npm игнорировать поле os, но сборка (которая зависит от собственных привязок POSIX) не удалась.

Есть ли хороший способ решить эту проблему?

Я также хотел бы, чтобы информация о типизировании TypeScript была доступна.

Я вижу пару возможных решений:

  1. Добавление реализаций заглушки в собственный код на Windows, которые делают один из:
    • Бросить на использование
    • Возвращать тривиальные значения
  2. Добавить родительский "мета" пакет, который optionalDependencies пакет, который не совместим с Windows. Пакет «meta» установится нормально, но при выполнении произойдет сбой. Он также может предоставить информацию о типе для использования разработчиком.
  3. Используйте тот факт, что optionalDependencies переопределяет любые dependencies с одинаковыми именами и предоставляет альтернативный пакет, который работает в обеих системах. Эту идею нужно было бы отбросить.

В настоящее время я склоняюсь к # 1 и бросаю, но все же думаю, что это немного ниже номинала. # 2 в порядке, но лучше не иметь всего второго пакета только для этого.

Буду очень признателен за любые предложения.

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