Аддон для платформы node-gyp

Можно ли указать, что определенное собственное дополнение предназначено только для сборки для определенной платформы (например, win32)?

В настоящее время у меня есть надстройка C ++, которая использует Windows API, но node-gyp пытается создать ее и для систем на основе UNIX.

Я искал в документации по node-gyp и раздел документации надстройки NodeJS C / C ++ безуспешно.


person jviotti    schedule 19.01.2015    source источник
comment
Каким будет ожидаемое поведение модуля, если он не будет построен? На ум приходит bson, который заменяет сценарий установки всегда возвращает успех, даже если сборка не удалась. Затем в JS он возвращается к реализации JS, когда двоичный файл недоступен.   -  person loganfsmyth    schedule 19.01.2015
comment
@loganfsmyth Если собственный модуль не может быть собран, мой модуль не должен устанавливаться, так как поведение, реализуемое собственным модулем, имеет важное значение для модуля, поскольку я не могу быть реализован в JavaScript в качестве запасного варианта.   -  person jviotti    schedule 19.01.2015
comment
Тогда вы можете объявить модуль в optionalDependencies вместо dependencies в package.json?   -  person loganfsmyth    schedule 19.01.2015
comment
@loganfsmyth Родной аддон не находится в отдельном модуле. Это исходники и bindings.gyp живут в моем проекте, и я хочу проинструктировать node-gyp создавать надстройку только для win32. Это возможно? Другой альтернативой, как вы упомянули, было бы переместить собственный аддон в другой модуль, поместить его в качестве дополнительной зависимости в мой основной проект и выполнить условное require, если win32, однако я бы хотел избежать разделения модулей.   -  person jviotti    schedule 19.01.2015
comment
В будущем постарайтесь включить в вопрос как можно больше деталей. Все в этих комментариях великолепны, но их включение с самого начала очень помогло бы.   -  person loganfsmyth    schedule 19.01.2015
comment
@jviotti, ты нашел ответ вот так. Я тоже столкнулся с этой проблемой.   -  person bhavya_w    schedule 13.08.2016


Ответы (2)


да.

Вы можете добавить "os" раздел в свой package.json, чтобы ограничить, с какими платформами совместим ваш аддон.

Вот документация OS package.json.

person justin.m.chase    schedule 09.07.2015

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

Например, js-bson включает собственный сценарий, пытающийся строить и молча терпеть неудачу. Вместо этого вы можете включить туда сценарий, который проверяет ОС и запускает node-gyp rebuild, только если система - это Windows.

person loganfsmyth    schedule 19.01.2015