Node.js native addon build tool
node-gyp
jest wieloplatformowym narzędziem wiersza poleceń napisanym w Node.js do kompilacji rdzennych modułów addon dla Node.js, co zdejmuje ból radzenia sobie z różnymi różnicami w platformach budowania. Jest to zamiennik node-waf
programu, który został usunięty dla node v0.8
. Jeśli masz natywny dodatek dla węzła, który nadal ma plik wscript
, to zdecydowanie powinieneś dodać plik binding.gyp
w celu obsługi najnowszych wersji węzła.
Wielokrotne wersje docelowe węzła są obsługiwane (tj. 0.8
, 0.9
, 0.10
, …, 1.0
,itd.), niezależnie od tego, jaka wersja węzła jest faktycznie zainstalowana w systemie (node-gyp
pobiera niezbędne pliki rozwojowe dla wersji docelowej).
Features:
- Łatwy w użyciu, spójny interfejs
- Te same polecenia do budowania modułu na każdej platformie
- Obsługuje wiele docelowych wersji Node
Instalacja
Możesz zainstalować za pomocą npm
:
$ npm install -g node-gyp
Będziesz także potrzebował zainstalować:
- Na Unixie:
-
python
(v2.7
zalecane,v3.x.x
nie jest wspierane) make
- Prawidłowy toolchain kompilatora C/C++, jak GCC
-
- Na Windowsie:
- Python (
v2.7.3
zalecany,v3.x.x
nie jest obsługiwany) - Windows XP/Vista/7:
- Microsoft Visual Studio C++ 2010 (wersja Express działa dobrze)
- Do 64-bitowych kompilacji węzła i modułów natywnych potrzebny będzie również Windows 7 64-bit SDK
- Jeśli instalacja się nie powiedzie, spróbuj najpierw odinstalować wszelkie C++ 2010 x64&x86 Redistributable, które masz zainstalowane.
- Jeśli otrzymujesz błędy, że 64-bitowe kompilatory nie są zainstalowane, możesz również potrzebować aktualizacji kompilatora dla Windows SDK 7.1
- Windows 7/8:
- Microsoft Visual Studio C++ 2012 for Windows Desktop (wersja Express działa dobrze)
- Python (
Zauważ, że OS X jest tylko odmianą Uniksa, więc potrzebuje python
, make
i C/C++.Łatwym sposobem na ich uzyskanie jest zainstalowanie XCode od Apple, a następnie użycie go do zainstalowania narzędzi wiersza poleceń (w Preferencje -> Pobrane).
Jak używać
Aby skompilować natywny dodatek, najpierw przejdź do jego katalogu głównego:
$ cd my_node_addon
Następnym krokiem jest wygenerowanie odpowiednich plików kompilacji projektu dla bieżącej platformy. Użyj configure
do tego celu:
$ node-gyp configure
Uwaga: Krok configure
szuka pliku binding.gyp
w katalogu currentdirectory do przetworzenia. Zobacz poniżej instrukcje dotyczące tworzenia pliku binding.gyp
.
Teraz będziesz miał albo plik Makefile
(na platformach Unix), albo plik vcxproj
(na Windows) w katalogu build/
. Następnie wywołaj polecenie build
:
$ node-gyp build
Teraz masz swój skompilowany plik .node
bindings! Skompilowane wiązania kończą się w build/Debug/
lub build/Release/
, w zależności od trybu budowania. W tym momencie możesz zażądać pliku .node
z Node i uruchomić swoje testy!
Uwaga: Aby utworzyć kompilację Debug pliku wiązań, przekaż przełącznik --debug
(lub-d
) podczas uruchamiania polecenia configure
lub build
.
Plik „binding.gyp”
Poprzednio, gdy Node miał node-waf
, musiałeś napisać plik wscript
. Teraz zastąpił go plik binding.gyp
, który opisuje konfigurację do zbudowania modułu w formacie JSON. Ten plik zostanie umieszczony w korzeniu twojego pakietu, obok pliku package.json
.
Bezkompromisowy plik gyp
odpowiedni do zbudowania dodatku do węzła wygląda tak:
{ "targets": } ]}
Kilka dodatkowych zasobów do pisania plików gyp
:
- „Hello World” przykład dodatku do węzła
- dokumentacja użytkownika gyp
- odniesienie do formatu wejściowego gyp
- „binding.gyp” pliki out in the wild wiki page
Komendy
node-gyp
odpowiada na następujące komendy:
Command | Description |
---|---|
build |
Wywołuje make /msbuild.exe i buduje natywny addon |
clean |
Usuwa wszelkie pliki build dir, jeśli istnieją |
configure |
Generuje pliki budowania projektu dla bieżącej platformy |
rebuild |
Uruchamia „clean”, „configure” i „build” wszystkie z rzędu |
install |
Instaluje pliki nagłówkowe rozwoju węzła dla danej wersji |
list |
Wykazuje aktualnie zainstalowane wersje plików rozwoju węzła |
remove |
Usuwa pliki nagłówkowe rozwoju węzła dla podanej wersji |
Licencja
(The MIT License)
Copyright (c) 2012 Nathan Rajlich <[email protected]>
Pozwala się niniejszym, bezpłatnie, każdej osobie, która uzyskała kopię niniejszego oprogramowania i związanych z nim plików dokumentacji („Oprogramowanie”), na nieograniczone korzystanie z Oprogramowania, w tym bez ograniczeń prawa do używania, kopiowania, modyfikowania, łączenia, publikowania, dystrybucji, udzielania sublicencji i/lub sprzedaży kopii Oprogramowania, oraz zezwalania na to osobom, którym Oprogramowanie zostało dostarczone, z zastrzeżeniem następujących warunków:
Powyższa nota o prawach autorskich oraz niniejsza nota o zezwoleniu powinny być dołączone do wszystkich kopii lub istotnych części Oprogramowania.
OPROGRAMOWANIE JEST DOSTARCZANE W STANIE, W JAKIM SIĘ ZNAJDUJE, BEZ GWARANCJI JAKIEGOKOLWIEK RODZAJU, WYRAŹNEJ LUB DOROZUMIANEJ, WŁĄCZAJĄC W TO, ALE NIE OGRANICZAJĄC SIĘ DO GWARANCJI PRZYDATNOŚCI HANDLOWEJ, PRZYDATNOŚCI DO OKREŚLONEGO CELU I NIENARUSZALNOŚCI. W ŻADNYM WYPADKU AUTORZY LUB POSIADACZE PRAW AUTORSKICH NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK ROSZCZENIA, SZKODY LUB INNĄ ODPOWIEDZIALNOŚĆ, CZY TO W RAMACH POWÓDZTWA UMOWNEGO, DELIKTOWEGO CZY INNEGO, WYNIKAJĄCĄ Z, Z LUB W ZWIĄZKU Z OPROGRAMOWANIEM LUB UŻYTKOWANIEM LUB INNYMI DZIAŁANIAMI ZWIĄZANYMI Z OPROGRAMOWANIEM.