nodejs / node-gyp
node-gyp
jest wieloplatformowym narzędziem wiersza poleceń napisanym w Node.js do kompilacji natywnych modułów addon dla Node.js. Zawiera ono sprzedaną kopię projektugyp-next, który był wcześniej używany przez zespół Chromium, rozszerzoną w celu wspierania rozwoju natywnych dodatków Node.js.
Zauważ, że node-gyp
nie jest używany do budowania samego Node.js.
Obsługiwanych jest wiele docelowych wersji Node.js (tj. 0.8
, …, 4
, 5
, 6
, itd.), niezależnie od tego, jaka wersja Node.js jest faktycznie zainstalowana w systemie(node-gyp
pobiera niezbędne pliki programistyczne lub nagłówki dla wersji docelowej).
Cechy
- Te same polecenia budowania działają na każdej z obsługiwanych platform
- Obsługuje kierowanie różnych wersji Node.js
Instalacja
Możesz zainstalować node-gyp
używając npm
:
npm install -g node-gyp
W zależności od systemu operacyjnego, będziesz musiał zainstalować:
Na Unixie
- Python v3.6, v3.7, v3.8, lub v3.9
make
- Poprawny toolchain kompilatora C/C++, taki jak GCC
Na macOS
UWAGA: Jeśli Twój Mac został uaktualniony do macOS Catalina (10.15), proszę przeczytać macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, lub v3.9
- Xcode
- Musisz także zainstalować
XCode Command Line Tools
uruchamiającxcode-select --install
. Alternatywnie, jeśli masz już zainstalowany pełny Xcode, można je znaleźć w menuXcode -> Open Developer Tool -> More Developer Tools...
. W tym kroku zostaną zainstalowaneclang
,clang++
imake
.
- Musisz także zainstalować
W systemie Windows
Zainstaluj aktualną wersję Pythona z pakietu Microsoft Store.
Instaluj narzędzia i konfigurację ręcznie:
- Zainstaluj środowisko Visual C++ Build Environment: Visual Studio Build Tools(używając obciążenia roboczego „Visual C++ build tools”) lub Visual Studio 2017 Community(używając obciążenia roboczego „Desktop development with C++”)
- Uruchom cmd,
npm config set msvs_version 2017
Jeśli powyższe kroki nie zadziałały w Twoim przypadku, odwiedź Microsoft’s Node.js Guidelines for Windows, aby uzyskać dodatkowe wskazówki.
Aby ukierunkować natywne ARM64 Node.js na Windows 10 on ARM, dodaj komponenty „Visual C++ compilers and libraries for ARM64” i „Visual C++ ATL for ARM64”.
Konfigurowanie zależności Pythona
node-gyp
wymaga zainstalowania kompatybilnej wersji Pythona, jednej z: v3.6, v3.7,v3.8, lub v3.9. Jeśli masz zainstalowanych wiele wersji Pythona, możesz określić, której wersji Pythona node-gyp
powinien użyć w jeden z następujących sposobów:
- ustawiając opcję
--python
wiersza poleceń, np.
node-gyp <command> --python /path/to/executable/python
- Jeśli program
node-gyp
jest wywoływany za pomocąnpm
, a masz zainstalowanych wiele wersji Pythona, to możesz ustawić klucz konfiguracyjny 'python’ programunpm
na odpowiednią wartość:
npm config set python /path/to/executable/python
-
Jeśli zmienna środowiskowa
PYTHON
jest ustawiona na ścieżkę do pliku wykonywalnego Pythona,to ta wersja zostanie użyta, jeśli jest to wersja zgodna. -
Jeśli zmienna środowiskowa
NODE_GYP_FORCE_PYTHON
jest ustawiona na ścieżkę do pliku wykonywalnego Pythona, zostanie ona użyta zamiast innych skonfigurowanych lub wbudowanych ścieżek wyszukiwania Pythona. Jeśli nie jest to kompatybilna wersja, nie będą wykonywane żadne dalsze wyszukiwania.
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. Do tego celu należy użyć configure
:
node-gyp configure
Autodetekcja nie powiedzie się dla Visual C++ Build Tools 2015, więc należy dodać --msvs_version=2015
(nie jest potrzebny, gdy jest uruchamiany przez npm, jak skonfigurowano powyżej):
node-gyp configure --msvs_version=2015
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
(w systemie 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
za pomocą Node.js i uruchomić swoje testy!
Uwaga: Aby utworzyć kompilację Debug pliku wiązań, przekaż przełącznik --debug
(lub-d
) podczas uruchamiania poleceń configure
, build
lub rebuild
.
Plik binding.gyp
Plik binding.gyp
opisuje konfigurację do zbudowania twojego modułu, w formacie podobnym do JSON. Ten plik zostanie umieszczony w korzeniu twojego pakietu, obokpackage.json
.
Bezkompromisowy gyp
plik odpowiedni do budowy dodatku Node.js może wyglądać następująco:
{ "targets": } ]}
Dalsze czytanie
Kilka dodatkowych zasobów dotyczących Node.js native addons i pisania gyp
plików konfiguracyjnych:
- „Going Native” a nodeschool.io tutorial
- „Hello World” node addon example
- 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 |
---|---|
help |
Pokazuje okno dialogowe pomocy |
build |
Wywołuje make /msbuild.exe i buduje natywny addon |
clean |
Usuwa katalog build , jeśli istnieje |
configure |
Generuje pliki kompilacji projektu dla bieżącej platformy |
rebuild |
Uruchamia clean , configure i build wszystkie z rzędu |
install |
Instaluje pliki nagłówkowe Node.js dla podanej wersji |
list |
Lista aktualnie zainstalowanych wersji nagłówków Node.js |
remove |
Usuwa pliki nagłówkowe Node.js pliki nagłówkowe dla danej wersji |
Opcje poleceń
node-gyp
akceptuje następujące opcje poleceń:
Command | Description | |||
---|---|---|---|---|
-j n , --jobs n |
Run make in parallel. Wartość max wykorzysta wszystkie dostępne rdzenie procesora |
|||
--target=v6.2.1 |
Node.js version to build for (default is process.version ) |
|||
--silly , --loglevel=silly |
Log all progress to console | |||
--verbose , --loglevel=verbose |
Loguj większość postępu do konsoli | |||
--silent , --loglevel=silent |
Nie loguj niczego do konsoli | |||
debug , --debug |
Make Debug build (default is Release ) |
|||
--release , --no-debug |
Make Release build | |||
-C $dir , --directory=$dir |
Run command in different directory | |||
--make=$make |
Override make command (e.g. gmake ) |
|||
--thin=yes |
Enable thin static libraries | |||
--arch=$arch |
Set target architecture (np. ia32) | |||
--tarball=$path |
Uzyskaj nagłówki z lokalnego pliku tarball | |||
--devdir=$path |
Katalog pobierania SDK (domyślnie katalog pamięci podręcznej systemu operacyjnego) | |||
--ensure |
Nie instaluj ponownie nagłówków, jeśli są już obecne | |||
--dist-url=$url |
Download header tarball from custom URL | |||
--proxy=$url |
Set HTTP(S) proxy for downloading header tarball | |||
--noproxy=$urls |
Set urls to ignore proxies when downloading header tarball | |||
--cafile=$cafile |
Override default CA chain (to download tarball) | |||
--nodedir=$path |
Ustalenie ścieżki do kodu źródłowego węzła | |||
--python=$path |
Ustalenie ścieżki do binarki Pythona | |||
--msvs_version=$version |
Ustalenie wersji Visual Studio (tylko Windows) | |||
--solution=$solution |
Ustalenie wersji Visual Studio (tylko Windows) | |||
--solution=$solution |
Ustalenie wersji Visual Studio (tylko Windows) | |||
--solution=$solution |
Ostatnie dni w roku. | --solution=$solution |
Set Visual Studio Solution version (Windows only) |
Konfiguracja
Zmienne środowiskowe
Użyj postaci npm_config_OPTION_NAME
dla dowolnej z opcji poleceń wymienionych powyżej (myślniki w nazwach opcji należy zastąpić podkreślnikami).
Na przykład, aby ustawić devdir
równe /tmp/.gyp
, można by:
Uruchomić to w systemie Unix:
export npm_config_devdir=/tmp/.gyp
Albo to w systemie Windows:
set npm_config_devdir=c:\temp\.gyp
npm configuration
Użyj formy OPTION_NAME
dla dowolnej opcji polecenia wymienionej powyżej.
Na przykład, aby ustawić devdir
równe /tmp/.gyp
, wykonałbyś:
npm config set devdir /tmp/.gyp
Uwaga: Konfiguracja ustawiona za pośrednictwem npm
będzie używana tylko wtedy, gdy node-gyp
jest uruchamiany za pośrednictwem npm
, a nie wtedy, gdy node-gyp
jest uruchamiany bezpośrednio.
Licencja
node-gyp
jest dostępny na licencji MIT. Zobacz plik LICENSE, aby uzyskać szczegółowe informacje.
Leave a Reply