2015-05-12 4 views
4

node-gyp --help говорит:Где указаны document-gyp [параметры]?

Usage: node-gyp <command> [options] 

where <command> is one of: 
- build - Invokes `make` and builds the module 
- clean - Removes any generated build files and the "out" dir 
- configure - Generates a Makefile for the current module 
- rebuild - Runs "clean", "configure" and "build" all at once 
- install - Install node development files for the specified node version. 
- list - Prints a listing of the currently installed node development files 
- remove - Removes the node development files for the specified version 

[email protected] /usr/local/lib/node_modules/node-gyp 
[email protected] 

Но где [options] на самом деле документально? Я выбрал различные исходные файлы .js, чтобы попытаться понять это и ничего не придумал.

В частности, я пытаюсь использовать файл привязок, который не называется 'binding.gyp', но похоже, что узел -> оболочка Python, который находится между node.js и gyp, не позволяет это из-за некоторых жесткое кодирование (насколько я могу это понять).

Например: node-gyp configure custom.gyp производит:

<snip> 
gyp info spawn python 
gyp info spawn args [ '/usr/local/lib/node_modules/node-gyp/gyp/gyp_main.py', 
gyp info spawn args 'binding.gyp', <-- NOT OK 
gyp info spawn args 'custom.gyp', <-- OK 
<snip> 
gyp info spawn args '-I', 
gyp info spawn args '/usr/local/lib/node_modules/node-gyp/custom.gypi', <-- MAYBE OK? DON'T LIKE IT BEING GLOBAL (race condition here...) 
<snip> 
gyp: binding.gyp not found (cwd: <snip>) while trying to load binding.gyp 
gyp ERR! configure error <-- YES because it doesn't exist, I want to use 'custom.gyp' 
gyp ERR! stack Error: `gyp` failed with exit code: 1 
<snip> 

где <snip> просто представляет меня удалить ненужную информацию.

Возможно, я смогу обойти это, изменив оболочку Python, но есть ли другой способ? Например, node-gyp --option=x?

ответ

1

Похоже, на данный момент имеется довольно немного документации для этого на node-gyp repo.

1

Узел-gyp не совсем хорошо документирован, поэтому ниже приведены мои выводы из источников проекта.

Опции для node-gyp зависят от команды. Эти параметры перечислены в объекте configDefs. Некоторые из них переведены в варианты GYP, другие - нет.

имя файла binding.gyp GYP жестко закодировано в configure.js

варианты Gyp вероятно могут быть установлены в GYP_* переменных окружения перед узлом-Gyp вызова. Пожалуйста, обратитесь к справочной системе GYP и sources, так как GYP также недостаточно хорошо документирован.

+0

спасибо, поэтому, кажется, единственный способ сделать это - перехватить компиляцию скрипта Python команды gyp. Я предполагаю, что это можно сделать с помощью перехвата оболочки, который обертывает gyp и перехватывает вызов, поступающий с node-gyp (чтобы изменить его на пути к gyp). Вероятно, это лучше, чем модификация самого компилятора команды node-gyp, поскольку у меня нет специальной версии node-gyp. –

Смежные вопросы