nodejs / node-gyp

Build Status

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ąc xcode-select --install. Alternatywnie, jeśli masz już zainstalowany pełny Xcode, można je znaleźć w menu Xcode -> Open Developer Tool -> More Developer Tools.... W tym kroku zostaną zainstalowane clang, clang++ i make.

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-gypwymaga 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:

  1. ustawiając opcję --python wiersza poleceń, np.
node-gyp <command> --python /path/to/executable/python

  1. Jeśli program node-gyp jest wywoływany za pomocą npm, a masz zainstalowanych wiele wersji Pythona, to możesz ustawić klucz konfiguracyjny 'python’ programu npm na odpowiednią wartość:
npm config set python /path/to/executable/python
  1. 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.

  2. 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-gypakceptuje 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