# nodejs/node-gyp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nodejs-node-gyp).**

10,647 stars · 1,869 forks · Python · MIT

## Links

- GitHub: https://github.com/nodejs/node-gyp
- awesome-repositories: https://awesome-repositories.com/repository/nodejs-node-gyp.md

## Topics

`gyp` `node` `node-addon` `node-gyp` `nodejs`

## Description

node-gyp is a build system wrapper and compilation tool designed to transform C and C++ source code into binary modules for the Node.js runtime. It functions as a native module compiler that orchestrates the process of converting native source code into binary bindings for high-performance execution.

The project provides cross-platform compilation by managing different compilers and SDKs across Windows, macOS, and Linux. It translates a single project configuration into platform-specific build files, such as Makefiles or Visual Studio projects, to ensure consistent builds across different operating systems.

Beyond standard binary compilation, the tool handles the procurement of remote source files and the management of versioned runtime header files required for binary compatibility. It also supports the generation of portable WebAssembly modules.

## Tags

### Development Tools & Productivity

- [Add-on Compilation Toolchains](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/build-systems/binary-compilation-toolchains/server-binary-compilers/add-on-compilation-toolchains.md) — Converts C and C++ source code into binary bindings and modules for high-performance execution in the Node.js runtime. ([source](https://github.com/nodejs/node-gyp/blob/main/CHANGELOG.md))
- [Native Module Toolchains](https://awesome-repositories.com/f/development-tools-productivity/node-js-build-tools/native-module-toolchains.md) — Provides the primary toolchain for bootstrapping and compiling C and C++ native extensions for the Node.js runtime.
- [Build Environment Configurators](https://awesome-repositories.com/f/development-tools-productivity/build-environment-configurators.md) — Sets architecture, compiler versions, and system paths using flags or configuration files to prepare the build process. ([source](https://github.com/nodejs/node-gyp/blob/main/README.md))
- [Cross-Platform and Native Compilation](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/cross-platform-native-compilation.md) — Generates platform-specific build files and manages compiler toolchains to ensure native code compiles across different operating systems.
- [Build Toolchain Abstractions](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-toolchains/build-toolchain-abstractions.md) — Maps high-level build commands to specific compilers and SDKs based on the detected host operating system.
- [Multi-Toolchain Integration](https://awesome-repositories.com/f/development-tools-productivity/multi-toolchain-integration.md) — Connects with various compilers and SDKs across different operating systems to ensure consistent code compilation. ([source](https://github.com/nodejs/node-gyp/blob/main/CHANGELOG.md))
- [Platform Build File Generators](https://awesome-repositories.com/f/development-tools-productivity/project-file-generators/build-configuration-file-generators/platform-build-file-generators.md) — Translates a central JSON project definition into platform-specific build files like Makefiles or Visual Studio projects.
- [Platform-Specific Build File Generation](https://awesome-repositories.com/f/development-tools-productivity/project-file-generators/build-configuration-file-generators/platform-specific-build-file-generation.md) — Creates platform-specific configuration files, such as Makefiles, based on a central project definition. ([source](https://github.com/nodejs/node-gyp#readme))
- [Build File Generators](https://awesome-repositories.com/f/development-tools-productivity/build-file-generators.md) — Generates platform-specific build files such as Makefiles and Visual Studio projects from a single project configuration.
- [Build-Time Source Procurement](https://awesome-repositories.com/f/development-tools-productivity/build-time-source-procurement.md) — Downloads and extracts external dependencies from HTTP endpoints during the build process to satisfy native requirements.
- [Target-Specific Build Settings](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-build-targets/target-specific-build-settings.md) — Builds native modules for specific runtime versions by specifying target versions and header locations. ([source](https://github.com/nodejs/node-gyp#readme))

### DevOps & Infrastructure

- [Build Configuration Management](https://awesome-repositories.com/f/devops-infrastructure/build-configuration-management.md) — Reads compilation settings from configuration files or package manifests to determine how native code is built. ([source](https://github.com/nodejs/node-gyp/blob/main/CHANGELOG.md))

### Programming Languages & Runtimes

- [Binary Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/binary-compilation.md) — Transforms C and C++ source code into binary modules that the JavaScript runtime can load.
- [Node.js Native Addons](https://awesome-repositories.com/f/programming-languages-runtimes/node-js-native-addons.md) — Converts C and C++ source code into binary modules that can be loaded and executed within a Node.js environment.
- [Build Tools](https://awesome-repositories.com/f/programming-languages-runtimes/node-js-native-addons/build-tools.md) — Compiles C and C++ source code into binary modules that can be loaded as native addons by Node.js.
- [External Source Inclusions](https://awesome-repositories.com/f/programming-languages-runtimes/external-source-inclusions.md) — Downloads remote source files via HTTP and integrates them into the compilation process. ([source](https://github.com/nodejs/node-gyp/blob/main/docs/binding.gyp-files-in-the-wild.md))
- [Native Library Integrations](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/foreign-function-interfaces/native-library-integrations.md) — Fetches remote source files and integrates external C++ libraries into the build process for native extensions.
- [Runtime Header Management](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-header-management.md) — Downloads and links specific versioned C++ header files to ensure binary compatibility with the target runtime.
- [WebAssembly Glue Code Generators](https://awesome-repositories.com/f/programming-languages-runtimes/webassembly-glue-code-generators.md) — Builds native source code into portable WebAssembly formats, providing the necessary interface for web environments.

### Operating Systems & Systems Programming

- [Toolchain Path Resolution](https://awesome-repositories.com/f/operating-systems-systems-programming/architecture-detection/architecture-aware-pathing/toolchain-path-resolution.md) — Determines system paths and compiler versions via command-line flags and configuration files to locate build tools.

### Web Development

- [WebAssembly Compilation](https://awesome-repositories.com/f/web-development/webassembly-compilation.md) — Builds native modules into a portable WebAssembly format for use in web environments. ([source](https://github.com/nodejs/node-gyp/blob/main/CHANGELOG.md))
