[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10141":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},10141,"node-gyp","nodejs\u002Fnode-gyp","nodejs","Node.js native addon build tool","",null,"Python",10637,1870,259,134,0,1,5,31,4,44.82,"MIT License",false,"main",true,[27,28,29,5,7],"gyp","node","node-addon","2026-06-12 02:02:17","# `node-gyp` - Node.js native addon build tool\n\n[![Build Status](https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode-gyp\u002Fworkflows\u002FTests\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode-gyp\u002Factions?query=workflow%3ATests+branch%3Amain)\n![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnode-gyp)\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for\ncompiling native addon modules for Node.js. It contains a vendored copy of the\n[gyp-next](https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fgyp-next) project that was previously used\nby the Chromium team and extended to support the development of Node.js native\naddons.\n\nNote that `node-gyp` is _not_ used to build Node.js itself.\n\nAll current and LTS target versions of Node.js are supported. Depending on what version of Node.js is actually installed on your system\n`node-gyp` downloads the necessary development files or headers for the target version. List of stable Node.js versions can be found on [Node.js website](https:\u002F\u002Fnodejs.org\u002Fen\u002Fabout\u002Fprevious-releases).\n\n## Features\n\n * The same build commands work on any of the supported platforms\n * Supports the targeting of different versions of Node.js\n\n## Installation\n\n> [!Important]\n> Python >= v3.12 requires `node-gyp` >= v10\n\nYou can install `node-gyp` using `npm`:\n\n``` bash\nnpm install -g node-gyp\n```\n\nDepending on your operating system, you will need to install:\n\n### On Unix\n\n   * [A supported version of Python](https:\u002F\u002Fdevguide.python.org\u002Fversions\u002F)\n   * `make`\n   * A proper C\u002FC++ compiler toolchain, like [GCC](https:\u002F\u002Fgcc.gnu.org)\n\n### On macOS\n\n   * [A supported version of Python](https:\u002F\u002Fdevguide.python.org\u002Fversions\u002F)\n   * `Xcode Command Line Tools` which will install `clang`, `clang++`, and `make`.\n     * Install the `Xcode Command Line Tools` standalone by running `xcode-select --install`. -- OR --\n     * Alternatively, if you already have the [full Xcode installed](https:\u002F\u002Fdeveloper.apple.com\u002Fxcode\u002Fdownload\u002F), you can install the Command Line Tools under the menu `Xcode -> Open Developer Tool -> More Developer Tools...`.\n\n\n### On Windows\n\nInstall tools with [Chocolatey](https:\u002F\u002Fchocolatey.org):\n``` bash\nchoco install python visualstudio2022-workload-vctools -y\n```\n\nOr install and configure Python and Visual Studio tools manually:\n\n  * Follow the instructions in [Using Python on Windows](https:\u002F\u002Fdocs.python.org\u002F3\u002Fusing\u002Fwindows.html) to install\n    the current [version of Python](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F).\n\n   * Install Visual C++ Build Environment: For Visual Studio 2019 or later, use the `Desktop development with C++` workload from [Visual Studio Community](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fthank-you-downloading-visual-studio\u002F?sku=Community).  For a version older than Visual Studio 2019, install [Visual Studio Build Tools](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fthank-you-downloading-visual-studio\u002F?sku=BuildTools) with the `Visual C++ build tools` option.\n\n   To target native ARM64 Node.js on Windows on ARM, add the components \"Visual C++ compilers and libraries for ARM64\" and \"Visual C++ ATL for ARM64\".\n\n   To use the native ARM64 C++ compiler on Windows on ARM, ensure that you have Visual Studio 2022 [17.4 or later](https:\u002F\u002Fdevblogs.microsoft.com\u002Fvisualstudio\u002Farm64-visual-studio-is-officially-here\u002F) installed.\n\nIt's advised to install the following PowerShell module: [VSSetup](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvssetup.powershell) using `Install-Module VSSetup -Scope CurrentUser`.\nThis will make Visual Studio detection logic use a more flexible and accessible method, avoiding PowerShell's `ConstrainedLanguage` mode.\n\n### Configuring Python Dependency\n\n`node-gyp` requires that you have installed a [supported version of Python](https:\u002F\u002Fdevguide.python.org\u002Fversions\u002F).\nIf you have multiple versions of Python installed, you can identify which version\n`node-gyp` should use in one of the following ways:\n\n1. by setting the `--python` command-line option, e.g.:\n\n``` bash\nnode-gyp \u003Ccommand> --python \u002Fpath\u002Fto\u002Fexecutable\u002Fpython\n```\n\n2. If `node-gyp` is called by way of `npm`, *and* you have multiple versions of\nPython installed, then you can set the `npm_config_python` environment variable\nto the appropriate path:\n``` bash\nexport npm_config_python=\u002Fpath\u002Fto\u002Fexecutable\u002Fpython\n```\n&nbsp;&nbsp;&nbsp;&nbsp;Or on Windows:\n```console\npy --list-paths  # To see the installed Python versions\nset npm_config_python=C:\\path\\to\\python.exe  # CMD\n$Env:npm_config_python=\"C:\\path\\to\\python.exe\"  # PowerShell\n```\n\n3. If the `PYTHON` environment variable is set to the path of a Python executable,\nthen that version will be used if it is a supported version.\n\n4. If the `NODE_GYP_FORCE_PYTHON` environment variable is set to the path of a\nPython executable, it will be used instead of any of the other configured or\nbuilt-in Python search paths. If it's not a compatible version, no further\nsearching will be done.\n\n### Build for Third Party Node.js Runtimes\n\nWhen building modules for third-party Node.js runtimes like Electron, which have\ndifferent build configurations from the official Node.js distribution, you\nshould use `--dist-url` or `--nodedir` flags to specify the headers of the\nruntime to build for.\n\nAlso when `--dist-url` or `--nodedir` flags are passed, node-gyp will use the\n`config.gypi` shipped in the headers distribution to generate build\nconfigurations, which is different from the default mode that would use the\n`process.config` object of the running Node.js instance.\n\nSome old versions of Electron shipped malformed `config.gypi` in their headers\ndistributions, and you might need to pass `--force-process-config` to node-gyp\nto work around configuration errors.\n\n## How to Use\n\nTo compile your native addon first go to its root directory:\n\n``` bash\ncd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\nnode-gyp configure\n```\n\nAuto-detection fails for Visual C++ Build Tools 2015, so `--msvs_version=2015`\nneeds to be added (not needed when run by npm as configured above):\n``` bash\nnode-gyp configure --msvs_version=2015\n```\n\n__Note__: The `configure` step looks for a `binding.gyp` file in the current\ndirectory to process. See below for instructions on creating a `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build\u002F` directory. Next, invoke the `build` command:\n\n``` bash\nnode-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build\u002FDebug\u002F` or `build\u002FRelease\u002F`, depending on the build mode. At this point,\nyou can require the `.node` file with Node.js and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running either the `configure`, `build` or `rebuild` commands.\n\n## The `binding.gyp` file\n\nA `binding.gyp` file describes the configuration to build your module, in a\nJSON-like format. This file gets placed in the root of your package, alongside\n`package.json`.\n\nA barebones `gyp` file appropriate for building a Node.js addon could look like:\n\n```python\n{\n  \"targets\": [\n    {\n      \"target_name\": \"binding\",\n      \"sources\": [ \"src\u002Fbinding.cc\" ]\n    }\n  ]\n}\n```\n\n## Further reading\n\nThe **[docs](.\u002Fdocs\u002F)** directory contains additional documentation on specific node-gyp topics that may be useful if you are experiencing problems installing or building addons using node-gyp.\n\nSome additional resources for Node.js native addons and writing `gyp` configuration files:\n\n * [\"Going Native\" a nodeschool.io tutorial](http:\u002F\u002Fnodeschool.io\u002F#goingnative)\n * [\"Hello World\" node addon example](https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode\u002Ftree\u002Fmain\u002Ftest\u002Faddons\u002Fhello-world)\n * [gyp user documentation](https:\u002F\u002Fgyp.gsrc.io\u002Fdocs\u002FUserDocumentation.md)\n * [gyp input format reference](https:\u002F\u002Fgyp.gsrc.io\u002Fdocs\u002FInputFormatReference.md)\n * [*\"binding.gyp\" files out in the wild* wiki page](.\u002Fdocs\u002Fbinding.gyp-files-in-the-wild.md)\n\n## Commands\n\n`node-gyp` responds to the following commands:\n\n| **Command**   | **Description**\n|:--------------|:---------------------------------------------------------------\n| `help`        | Shows the help dialog\n| `build`       | Invokes `make`\u002F`msbuild.exe` and builds the native addon\n| `clean`       | Removes the `build` directory if it exists\n| `configure`   | Generates project build files for the current platform\n| `rebuild`     | Runs `clean`, `configure` and `build` all in a row\n| `install`     | Installs Node.js header files for the given version\n| `list`        | Lists the currently installed Node.js header versions\n| `remove`      | Removes the Node.js header files for the given version\n\n\n## Command Options\n\n`node-gyp` accepts the following command options:\n\n| **Command**                       | **Description**\n|:----------------------------------|:------------------------------------------\n| `-j n`, `--jobs n`                | Run `make` in parallel. The value `max` will use all available CPU cores\n| `--target=v6.2.1`                 | Node.js version to build for (default is `process.version`)\n| `--silly`, `--loglevel=silly`     | Log all progress to console\n| `--verbose`, `--loglevel=verbose` | Log most progress to console\n| `--silent`, `--loglevel=silent`   | Don't log anything to console\n| `debug`, `--debug`                | Make Debug build (default is `Release`)\n| `--release`, `--no-debug`         | Make Release build\n| `-C $dir`, `--directory=$dir`     | Run command in different directory\n| `--make=$make`                    | Override `make` command (e.g. `gmake`)\n| `--thin=yes`                      | Enable thin static libraries\n| `--arch=$arch`                    | Set target architecture (e.g. ia32)\n| `--tarball=$path`                 | Get headers from a local tarball\n| `--devdir=$path`                  | SDK download directory (default is OS cache directory)\n| `--ensure`                        | Don't reinstall headers if already present\n| `--dist-url=$url`                 | Download header tarball from custom URL\n| `--proxy=$url`                    | Set HTTP(S) proxy for downloading header tarball\n| `--noproxy=$urls`                 | Set urls to ignore proxies when downloading header tarball\n| `--cafile=$cafile`                | Override default CA chain (to download tarball)\n| `--nodedir=$path`                 | Set the path to the node source code\n| `--python=$path`                  | Set path to the Python binary\n| `--msvs_version=$version`         | Set Visual Studio version (Windows only)\n| `--solution=$solution`            | Set Visual Studio Solution version (Windows only)\n| `--force-process-config`          | Force using runtime's `process.config` object to generate `config.gypi` file\n\n## Configuration\n\n### package.json\n\nUse the `config` object in your package.json with each key in the form `node_gyp_OPTION_NAME`. Any of the command\noptions listed above can be set (dashes in option names should be replaced by underscores).\n\nFor example, to set `devdir` equal to `\u002Ftmp\u002F.gyp`, your package.json would contain this:\n\n```json\n{\n  \"config\": {\n    \"node_gyp_devdir\": \"\u002Ftmp\u002F.gyp\"\n  }\n}\n```\n\n### Environment variables\n\nUse the form `npm_package_config_node_gyp_OPTION_NAME` for any of the command options listed\nabove (dashes in option names should be replaced by underscores).\n\nFor example, to set `devdir` equal to `\u002Ftmp\u002F.gyp`, you would:\n\nRun this on Unix:\n\n```bash\nexport npm_package_config_node_gyp_devdir=\u002Ftmp\u002F.gyp\n```\n\nOr this on Windows:\n\n```console\nset npm_package_config_node_gyp_devdir=c:\\temp\\.gyp\n```\n\nNote that in versions of npm before v11 it was possible to use the prefix `npm_config_` for\nenvironment variables. This was deprecated in npm@11 and will be removed in npm@12 so it\nis recommended to convert your environment variables to the above format.\n\n### `npm` configuration for npm versions before v9\n\nUse the form `OPTION_NAME` for any of the command options listed above.\n\nFor example, to set `devdir` equal to `\u002Ftmp\u002F.gyp`, you would run:\n\n```bash\nnpm config set [--global] devdir \u002Ftmp\u002F.gyp\n```\n\n**Note:** Configuration set via `npm` will only be used when `node-gyp`\nis run via `npm`, not when `node-gyp` is run directly.\n\n## License\n\n`node-gyp` is available under the MIT license. See the [LICENSE\nfile](LICENSE) for details.\n","`node-gyp` 是一个用于编译 Node.js 本地插件的跨平台命令行工具。它基于 gyp-next 项目，支持在不同平台上使用相同的构建命令，并能针对不同版本的 Node.js 进行编译。该工具能够自动下载与目标 Node.js 版本相匹配的开发文件或头文件，确保开发者无需手动处理复杂的依赖关系。适用于需要为 Node.js 应用程序添加高性能 C\u002FC++ 扩展模块的场景，如处理密集计算任务、访问底层系统资源等。安装 `node-gyp` 需要 Python（建议使用 v3.12 或更高版本）及相应操作系统下的编译工具链。",2,"2026-06-11 03:26:49","top_topic"]