node-gyp -node.js 기본 Addon 빌드 도구 
node-gyp 은 Node.js의 기본 Addon 모듈을 컴파일하기 위해 Node.js로 작성된 크로스 플랫폼 명령 줄 도구입니다. 여기에는 Chromium Team이 이전에 사용했으며 Node.js Native Addons의 개발을 지원하기 위해 확장 한 Gyp-Next 프로젝트의 공급 된 사본이 포함되어 있습니다.
node-gyp 은 Node.js 자체를 빌드하는 데 사용되지 않습니다 .
Node.js의 모든 현재 및 LTS 대상 버전이 지원됩니다. 시스템 node-gyp 에서 실제로 설치되는 Node.js 버전에 따라 대상 버전에 필요한 개발 파일 또는 헤더를 다운로드합니다. 안정적인 node.js 버전 목록은 node.js 웹 사이트에서 찾을 수 있습니다.
중요한
Python> = v3.12에는 node-gyp > = v10이 필요합니다
npm 사용하여 node-gyp 설치할 수 있습니다.
npm install -g node-gyp운영 체제에 따라 설치해야합니다.
makeclang , clang++ 및 make 설치하는 Xcode Command Line Tools .xcode-select --install 실행하여 Xcode Command Line Tools 독립형으로 설치하십시오. -- 또는 --Xcode -> Open Developer Tool -> More Developer Tools... 에서 명령 줄 도구를 설치할 수 있습니다.초콜릿으로 도구 설치 :
choco install python visualstudio2022-workload-vctools -y또는 파이썬 및 비주얼 스튜디오 도구를 수동으로 설치하고 구성하십시오.
Microsoft Store에서 현재 Python의 현재 버전을 설치하십시오.
Visual C ++ 빌드 환경 설치 : Visual Studio 2019 이상을 위해 Visual Studio 커뮤니티의 Desktop development with C++ 사용하십시오. Visual Studio 2019보다 오래된 버전의 경우 Visual C++ build tools 옵션을 사용하여 Visual Studio 빌드 도구를 설치하십시오.
위의 단계가 작동하지 않으면 추가 팁은 Windows의 Microsoft Node.js 지침을 방문하십시오.
ARM의 Windows에서 Native Arm64 Node.js를 대상으로하려면 ARM64의 "Visual C ++ 컴파일러 및 라이브러리"및 "ARM64 용 Visual C ++ ATL"구성 요소를 추가하십시오.
ARM의 Windows에서 Native ARM64 C ++ 컴파일러를 사용하려면 Visual Studio 2022 이상 설치되어 있는지 확인하십시오.
Install-Module VSSetup -Scope CurrentUser 사용하여 다음 PowerShell 모듈을 설치하는 것이 좋습니다. 이렇게하면 PowerShell의 ConstrainedLanguage 언어 모드를 피하면서보다 유연하고 접근 가능한 방법을 사용하기 위해 Visual Studio Detection Logic이됩니다.
node-gyp 지원되는 버전의 Python을 설치해야합니다. 여러 버전의 Python이 설치된 경우 다음 방법 중 하나에서 어떤 버전 node-gyp 사용할 것인지 식별 할 수 있습니다.
--python 명령 줄 옵션을 설정함으로써 : 예 : node-gyp < command > --python /path/to/executable/pythonnpm 을 통해 node-gyp 가 호출 되고 여러 버전의 Python이 설치된 경우 npm_config_python 환경 변수를 적절한 경로로 설정할 수 있습니다. export npm_config_python=/path/to/executable/python또는 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 PYTHON 환경 변수가 파이썬 실행 파일의 경로로 설정된 경우 해당 버전이 지원되는 버전 인 경우 사용됩니다.
NODE_GYP_FORCE_PYTHON 환경 변수가 Python 실행 파일의 경로로 설정된 경우 다른 구성 또는 내장 Python 검색 경로 대신 사용됩니다. 호환 버전이 아닌 경우 더 이상 검색이 완료되지 않습니다.
공식 Node.js 분포와는 다른 빌드 구성을 갖는 Electron과 같은 타사 Node.js Runtimes의 모듈을 구축 할 때 --dist-url 또는 --nodedir 플래그를 사용하여 런타임의 헤더를 지정해야합니다. .
또한 --dist-url 또는 --nodedir 플래그가 통과 될 때 Node-Gyp은 config.gypi가 헤더 분포에 선적 된 config.gypi 사용하여 빌드 구성을 생성하여 process.config 를 사용하는 기본 모드와 다릅니다. 실행중인 Node.js 인스턴스.
일부 기존 버전의 전자 배송 된 config.gypi 헤더 분포에서 --force-process-config 노드 덩어리로 전달하여 구성 오류를 해결해야 할 수도 있습니다.
원시 애드온을 컴파일하려면 먼저 루트 디렉토리로 이동합니다.
cd my_node_addon 다음 단계는 현재 플랫폼에 적합한 프로젝트 빌드 파일을 생성하는 것입니다. 이에 대한 configure 사용하십시오.
node-gyp configure Visual C ++ Build Tools 2015의 자동 감지 실패이므로 --msvs_version=2015 추가해야합니다 (위의 구성대로 NPM에서 실행할 때 필요하지 않음) :
node-gyp configure --msvs_version=2015 참고 : configure 단계는 현재 디렉토리의 binding.gyp 파일을 찾을 수 있습니다. binding.gyp 파일 생성에 대한 지침은 아래를 참조하십시오.
이제 build/ 디렉토리에 Makefile (Unix 플랫폼) 또는 vcxproj 파일 (Windows)이 있습니다. 다음으로 build 명령을 호출합니다.
node-gyp build 이제 컴파일 된 .node 바인딩 파일이 있습니다! 컴파일 된 바인딩은 빌드 모드에 따라 build/Debug/ 또는 build/Release/ 로 끝납니다. 이 시점에서 node.js가있는 .node 파일을 요구하고 테스트를 실행할 수 있습니다!
참고 : 바인딩 파일의 디버그 빌드를 만들려면 configure , build 또는 rebuild 된 명령을 실행할 때 --debug (또는 -d ) 스위치를 전달하십시오.
binding.gyp 파일 binding.gyp 파일은 모듈을 JSON과 같은 형식으로 빌드하려는 구성을 설명합니다. 이 파일은 package.json 과 함께 패키지의 루트에 배치됩니다.
Node.js Addon을 구축하는 데 적합한 Barebones gyp 파일은 다음과 같습니다.
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}DOCS 디렉토리에는 Node-Gyp을 사용하여 애드온을 설치하거나 건축하는 문제가 발생하는 경우 유용 할 수있는 특정 노드 가이트 주제에 대한 추가 문서가 포함되어 있습니다.
Node.js Native Addons 및 gyp 구성 파일 작성에 대한 몇 가지 추가 리소스 :
node-gyp 다음 명령에 응답합니다.
| 명령 | 설명 |
|---|---|
help | 도움말 대화 상자를 보여줍니다 |
build | make / msbuild.exe 호출하고 기본 애드온을 구축합니다 |
clean | build 디렉토리를 제거합니다 |
configure | 현재 플랫폼에 대한 프로젝트 빌드 파일을 생성합니다 |
rebuild | clean 실행, configure 및 모두 연속으로 build . |
install | 주어진 버전의 Node.js 헤더 파일을 설치합니다 |
list | 현재 설치된 node.js 헤더 버전을 나열합니다 |
remove | 주어진 버전의 Node.js 헤더 파일을 제거합니다 |
node-gyp 다음 명령 옵션을 수락합니다.
| 명령 | 설명 |
|---|---|
-jn , --jobs n | 동시에 make 하십시오. max 값은 사용 가능한 모든 CPU 코어를 사용합니다 |
--target=v6.2.1 | node.js 버전을 빌드 할 수 있습니다 (기본값은 process.version ) |
--silly , --loglevel=silly | 모든 진행 상황을 콘솔에 기록하십시오 |
--verbose , --loglevel=verbose | 대부분의 진행 상황을 콘솔에 기록합니다 |
--silent , --loglevel=silent | 콘솔에 아무것도 기록하지 마십시오 |
debug , --debug | 디버그 빌드 만들기 (기본값은 Release ) |
--release , --no-debug | 릴리스 빌드를 만드십시오 |
-C $dir , --directory=$dir | 다른 디렉토리에서 명령을 실행하십시오 |
--make=$make | 오버라이드 make Command (예 : gmake ) |
--thin=yes | 얇은 정적 라이브러리를 활성화하십시오 |
--arch=$arch | 대상 아키텍처 설정 (예 : IA32) |
--tarball=$path | 지역 타르 볼에서 헤더를 얻으십시오 |
--devdir=$path | SDK 다운로드 디렉토리 (기본값은 OS 캐시 디렉토리) |
--ensure | 이미 존재하는 경우 헤더를 다시 설치하지 마십시오 |
--dist-url=$url | Custom URL에서 Header Tarball을 다운로드하십시오 |
--proxy=$url | 헤더 타르 볼 다운로드를 위해 HTTP 프록시를 설정하십시오 |
--noproxy=$urls | 헤더 타르볼을 다운로드 할 때 프록시를 무시하도록 URL을 설정하십시오 |
--cafile=$cafile | Default CA 체인 재정의 (Tarball 다운로드) |
--nodedir=$path | 노드 소스 코드로의 경로를 설정하십시오 |
--python=$path | 파이썬 바이너리로의 경로를 설정하십시오 |
--msvs_version=$version | Visual Studio 버전 설정 (Windows 만 해당) |
--solution=$solution | Visual Studio 솔루션 버전 설정 (Windows 만 해당) |
--force-process-config | runtime의 process.config 객체를 사용하여 config.gypi 파일을 생성합니다 |
위에 나열된 명령 옵션에 대해 npm_config_OPTION_NAME 양식을 사용하십시오 (옵션 이름의 대시는 밑줄로 대체해야 함).
예를 들어, devdir /tmp/.gyp 와 동일하게 설정하려면 다음과 같습니다.
UNIX에서 실행하십시오.
export npm_config_devdir=/tmp/.gyp또는 이것은 Windows에서 :
set npm_config_devdir=c:temp.gypnpm 구성 위에 나열된 명령 옵션에 대해 OPTION_NAME 양식을 사용하십시오.
예를 들어, devdir /tmp/.gyp 와 동일하게 설정하려면 다음을 실행합니다.
npm config set [--global] devdir /tmp/.gyp 참고 : npm 통한 구성은 node-gyp node-gyp 직접 실행될 때가 아니라 npm 통해 노드 가이트를 실행할 때만 사용됩니다.
node-gyp MIT 라이센스에 따라 사용할 수 있습니다. 자세한 내용은 라이센스 파일을 참조하십시오.