node-gyp - Node.js Native Addon Build Tool 
node-gyp adalah alat baris perintah lintas platform yang ditulis dalam node.js untuk menyusun modul addon asli untuk node.js. Ini berisi salinan proyek GYP-Next yang sebelumnya digunakan oleh tim Chromium dan diperluas untuk mendukung pengembangan addons asli Node.js.
Perhatikan bahwa node-gyp tidak digunakan untuk membangun node.js itu sendiri.
Semua versi target Node.js saat ini dan LTS didukung. Bergantung pada versi apa Node.js yang sebenarnya diinstal pada sistem Anda node-gyp mengunduh file pengembangan atau header yang diperlukan untuk versi target. Daftar versi node.js yang stabil dapat ditemukan di situs web Node.js.
Penting
Python> = V3.12 membutuhkan node-gyp > = V10
Anda dapat menginstal node-gyp menggunakan npm :
npm install -g node-gypBergantung pada sistem operasi Anda, Anda harus menginstal:
makeXcode Command Line Tools yang akan menginstal clang , clang++ , dan make .Xcode Command Line Tools Standalone dengan menjalankan xcode-select --install . -- ATAU --Xcode -> Open Developer Tool -> More Developer Tools...Pasang alat dengan cokelat:
choco install python visualstudio2022-workload-vctools -yAtau instal dan konfigurasikan alat Python dan Visual Studio secara manual:
Instal versi Python saat ini dari Microsoft Store.
Instal Visual C ++ Build Environment: Untuk Visual Studio 2019 atau lebih baru, gunakan Desktop development with C++ dari komunitas Visual Studio. Untuk versi yang lebih tua dari Visual Studio 2019, instal Visual Studio Build Tools dengan opsi Visual C++ build tools .
Jika langkah -langkah di atas tidak berhasil untuk Anda, silakan kunjungi pedoman Microsoft Node.js untuk Windows untuk tips tambahan.
Untuk menargetkan Native Arm64 node.js pada windows di lengan, tambahkan komponen "Visual C ++ Compiler and Libraries for Arm64" dan "Visual C ++ ATL untuk ARM64".
Untuk menggunakan kompiler ARM64 C ++ asli pada windows di lengan, pastikan Anda memiliki Visual Studio 2022 17.4 atau yang lebih baru diinstal.
Disarankan untuk menginstal Modul PowerShell berikut: VSSETUP menggunakan Install-Module VSSetup -Scope CurrentUser . Ini akan membuat logika deteksi studio visual untuk menggunakan metode yang lebih fleksibel dan dapat diakses, menghindari mode ConstrainedLanguage PowerShell.
node-gyp mengharuskan Anda telah menginstal versi Python yang didukung. Jika Anda memiliki beberapa versi Python yang diinstal, Anda dapat mengidentifikasi versi node-gyp mana yang harus digunakan dengan salah satu cara berikut:
--python , misalnya: node-gyp < command > --python /path/to/executable/pythonnode-gyp dipanggil melalui npm , dan Anda memiliki beberapa versi Python yang diinstal, maka Anda dapat mengatur variabel lingkungan npm_config_python ke jalur yang sesuai: export npm_config_python=/path/to/executable/pythonAtau di Windows:
py --list-paths # To see the installed Python versions
set npm_config_python=C:pathtopython.exe # CMD
$Env:npm_config_python="C:pathtopython.exe" # PowerShell Jika variabel lingkungan PYTHON diatur ke jalur Python yang dapat dieksekusi, maka versi itu akan digunakan jika itu adalah versi yang didukung.
Jika variabel lingkungan NODE_GYP_FORCE_PYTHON diatur ke jalur Python yang dapat dieksekusi, itu akan digunakan sebagai ganti jalur pencarian Python yang dikonfigurasi atau bawaan lainnya. Jika ini bukan versi yang kompatibel, tidak ada pencarian lebih lanjut yang akan dilakukan.
Saat membangun modul untuk runtime node.js pihak ketiga seperti elektron, yang memiliki konfigurasi build yang berbeda dari distribusi node.js resmi, Anda harus menggunakan bendera --nodedir --dist-url menentukan header runtime untuk dibangun .
Juga ketika --dist-url atau --nodedir Bendera dilewati, Node-GYP akan menggunakan config.gypi yang dikirim dalam distribusi header untuk menghasilkan konfigurasi build, yang berbeda dari mode default yang akan menggunakan objek process.config . instance node.js yang sedang berjalan.
Beberapa versi lama elektron dikirimkan config.gypi malformed dalam distribusi header mereka, dan Anda mungkin perlu meneruskan --force-process-config ke node-gyp untuk mengatasi kesalahan konfigurasi.
Untuk mengkompilasi addon asli Anda pertama -tama pergi ke direktori root -nya:
cd my_node_addon Langkah selanjutnya adalah menghasilkan file build proyek yang sesuai untuk platform saat ini. Gunakan configure untuk itu:
node-gyp configure Deteksi otomatis gagal untuk Visual C ++ Build Tools 2015, jadi --msvs_version=2015 perlu ditambahkan (tidak diperlukan saat dijalankan oleh NPM seperti yang dikonfigurasi di atas):
node-gyp configure --msvs_version=2015 Catatan : Langkah configure mencari file binding.gyp di direktori saat ini untuk diproses. Lihat di bawah untuk instruksi tentang membuat file binding.gyp .
Sekarang Anda akan memiliki Makefile (pada platform UNIX) atau file vcxproj (di Windows) di Direktori build/ . Selanjutnya, panggil perintah build :
node-gyp build Sekarang Anda memiliki file .node Bindings Anda! Binding yang dikompilasi berakhir di build/Debug/ atau build/Release/ , tergantung pada mode build. Pada titik ini, Anda dapat memerlukan file .node dengan node.js dan menjalankan tes Anda!
CATATAN: Untuk membuat build debug dari file binding, lewati sakelar --debug (atau -d ) saat menjalankan perintah configure , build atau rebuild .
binding.gyp File binding.gyp menjelaskan konfigurasi untuk membangun modul Anda, dalam format seperti JSON. File ini ditempatkan di akar paket Anda, bersama package.json .
File gyp barebones yang sesuai untuk membangun node.js addon bisa terlihat seperti:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}Direktori DOCS berisi dokumentasi tambahan tentang topik Node-GYP spesifik yang mungkin berguna jika Anda mengalami masalah menginstal atau membangun addons menggunakan Node-GYP.
Beberapa sumber daya tambahan untuk addons asli node.js dan menulis file konfigurasi gyp :
node-gyp menanggapi perintah berikut:
| Memerintah | Keterangan |
|---|---|
help | Menampilkan Dialog Bantuan |
build | Memohon make / msbuild.exe dan membangun addon asli |
clean | Menghapus direktori build jika ada |
configure | Menghasilkan file pembuatan proyek untuk platform saat ini |
rebuild | Berjalan clean , configure dan build semua dalam satu baris |
install | Menginstal file header node.js untuk versi yang diberikan |
list | Mencantumkan versi header Node.js yang saat ini diinstal |
remove | Menghapus file header node.js untuk versi yang diberikan |
node-gyp menerima opsi perintah berikut:
| Memerintah | Keterangan |
|---|---|
-jn , --jobs n | Jalankan make paralel. Nilai max akan menggunakan semua core CPU yang tersedia |
--target=v6.2.1 | Versi node.js untuk dibangun (default adalah process.version ) |
--silly , --loglevel=silly | Mencatat semua kemajuan ke konsol |
--verbose , --loglevel=verbose | Log paling banyak kemajuan ke konsol |
--silent , --loglevel=silent | Jangan mencatat apa pun untuk menghibur |
debug , --debug | Buat Debug Build (Default adalah Release ) |
--release , --no-debug | Buat rilis Build |
-C $dir , --directory=$dir | Jalankan perintah di direktori yang berbeda |
--make=$make | Override make perintah (misalnya gmake ) |
--thin=yes | Aktifkan perpustakaan statis tipis |
--arch=$arch | Setel arsitektur target (misalnya IA32) |
--tarball=$path | Dapatkan header dari tarball lokal |
--devdir=$path | Direktori Unduh SDK (Default adalah Direktori Cache OS) |
--ensure | Jangan menginstal ulang header jika sudah ada |
--dist-url=$url | Unduh tarball header dari URL khusus |
--proxy=$url | Atur proxy http untuk mengunduh tarball header |
--noproxy=$urls | Atur URL untuk mengabaikan proksi saat mengunduh tarball header |
--cafile=$cafile | Override Default CA Chain (untuk mengunduh Tarball) |
--nodedir=$path | Atur jalur ke kode sumber simpul |
--python=$path | Atur jalur ke biner Python |
--msvs_version=$version | Atur Versi Visual Studio (hanya Windows) |
--solution=$solution | Setel Visual Studio Solution Version (hanya Windows) |
--force-process-config | Paksa Menggunakan Objek Runtime's process.config untuk menghasilkan file config.gypi |
Gunakan formulir npm_config_OPTION_NAME untuk salah satu opsi perintah yang tercantum di atas (tanda hubung dalam nama opsi harus diganti dengan garis bawah).
Misalnya, untuk mengatur devdir sama dengan /tmp/.gyp , Anda akan:
Jalankan ini di UNIX:
export npm_config_devdir=/tmp/.gypAtau ini di Windows:
set npm_config_devdir=c:temp.gypnpm untuk versi NPM sebelum v9 Gunakan Form OPTION_NAME untuk salah satu opsi perintah yang tercantum di atas.
Misalnya, untuk mengatur devdir sama dengan /tmp/.gyp , Anda akan menjalankan:
npm config set [--global] devdir /tmp/.gyp Catatan: Konfigurasi yang diatur melalui npm hanya akan digunakan ketika node-gyp dijalankan melalui npm , bukan saat node-gyp dijalankan secara langsung.
node-gyp tersedia di bawah lisensi MIT. Lihat file lisensi untuk detailnya.