Я поддерживаю простой маленький нативный Node.js пакет . Это действительно полезно только на linux, так как оно зависит от некоторых собственных функций POSIX c.
Из-за этого ограничения я использовал поле os
package.json
, чтобы указать, что это не должен быть установлен на win32
машинах.
Как насчет того, когда я хочу разрабатывать этот пакет как зависимость (и не run / test) на машине Windows? Npm не хочет устанавливать пакет. Я мог бы попытаться заставить Npm игнорировать поле os
, но сборка (которая зависит от собственных привязок POSIX) не удалась.
Есть ли хороший способ решить эту проблему?
Я также хотел бы, чтобы информация о типизировании TypeScript была доступна.
Я вижу пару возможных решений:
- Добавление реализаций заглушки в собственный код на Windows, которые делают один из:
- Бросить на использование
- Возвращать тривиальные значения
- Добавить родительский "мета" пакет, который
optionalDependencies
пакет, который не совместим с Windows. Пакет «meta» установится нормально, но при выполнении произойдет сбой. Он также может предоставить информацию о типе для использования разработчиком. - Используйте тот факт, что
optionalDependencies
переопределяет любые dependencies
с одинаковыми именами и предоставляет альтернативный пакет, который работает в обеих системах. Эту идею нужно было бы отбросить.
В настоящее время я склоняюсь к # 1 и бросаю, но все же думаю, что это немного ниже номинала. # 2 в порядке, но лучше не иметь всего второго пакета только для этого.
Буду очень признателен за любые предложения.