node-gyp이란?


123

누구든지 node-gypNode.JS 패키지를 빌드하기 위해 시스템 파일을 사용하는 이유와 이유를 설명 할 수 있습니까 ?

  1. Ii가 노드 프로젝트를 빌드하고 node-gyp내부적으로 사용하는 경우 .
  2. 그런 다음 그 프로젝트를 tar하고 다른 시스템으로 옮겼습니다.
  3. 나는 거기에서 그것을 풀고 그것을 사용하려고합니다.

이 접근 방식이 효과가 있습니까?


17
github 페이지 github.com/nodejs/node-gyp 에 설명되어 있습니다. 기본적으로 node-gyp같다 make. C ++ 프로젝트의 컴파일 프로세스를 제어하는 ​​데 사용되는 도구입니다. 단, node.js 애드온 (C ++로 작성된 모듈)을 위해 특별히 설계되었습니다. 따라서 동일한 CPU를 사용하는 경우 다른 시스템으로 이동할 수 있습니다. 다른 OS 또는 CPU로 이동 (예 : x86에서 ARM으로)은 작동하지 않습니다. Linux의 경우 동일한 배포판의 다른 버전의 다른 배포판으로 이동하면 작동하거나 작동하지 않을 수 있습니다. 아니에요 100 % 확실 일하는 것이 Node.js를 다른 버전으로 이동하는 경우
slebetman을

2
내가 실행 yarn why node-gyp하면 다음과 같이 돌아옵니다. 왜냐하면 node-sass다른 용도가 있다고 확신하지만 귀하 또는 사랑하는 사람이 진단을 받았다면 귀하의 프로젝트에있을 수 있습니다 sass.
Kzqai

@slebetman이 다른 노드 버전으로 이동하면 작동하지 않습니다. 100 % 사실인지 확실하지 않지만 내 경험상 nodejs 버전을 업그레이드 한 후 이전 node-gyp을 제거해야하며 모듈을 설치하는 동안 백그라운드에서 자동으로 다시 빌드됩니다.
Lukas Liesis

답변:


134

node-gypNode.js 애드온을 컴파일하는 도구입니다. Node.js 애드온은 C 또는 C ++로 작성된 기본 Node.js 모듈이므로 컴퓨터에서 컴파일해야합니다. node-gyp과 같은 도구로 컴파일 된 후에는 require()다른 Node.js 모듈 과 마찬가지로을 통해 해당 기능에 액세스 할 수 있습니다 .

모듈이 작동하지 않을 것이라고 제안한대로 수행하면 프로그램을 이동 한 시스템에서 node-gyp로 컴파일 / 빌드해야합니다.

node-gyp: https://github.com/nodejs/node-gyp

Node.js 애드온 : https://nodejs.org/api/addons.html


28
인정해야합니다. node-gyp을 사용하는 npmjs가없는 모듈을 봅니다. 저는 보통 10 마일 떨어진 곳에서 실행합니다
PirateApp

38
요즘에는 NodeJS로 작성된 비교적 간단한 웹 앱을 복제 할 수 있다는 사실이 흥미롭고, 갑자기 C 및 C ++로 작성된 네이티브 코드를 컴파일하기 위해 소프트웨어를 다운로드해야합니다. 가장 좋은 부분은 문제가 발생할 때이며이를 해결하기 위해 웹 디자인 기술로 무엇을해야하는지 정확히 알고 있습니다.
Jim Aho

3
MR-프로그램 @ 그것은 또한 당신에 의해 작성 될 필요가있는 결합을 통해 연결된
vuza

2
@JimAho 이상적으로, 종종 코드는 블랙 박스로되어 있습니다. 장점은 빠르고 잘 지원되는 도구를 사용하여 XML 구문 분석과 같은 특정 작업을 수행 할 수 있으며 느리거나 더 손상 될 수있는 js 포트를 기다릴 필요가 없다는 것입니다. 즉, 가능한 한 네이티브 js를 선호하지만 위치가 잘 확립되어 있는지 확신하지 못합니다. 또한 C / C ++는 의도적으로 OS에 의존하지 않는 경우 (예 : 알림)에 대해 매우 이식성이 있어야합니다. 또한 버그가 발생하기 쉬운 패키지는 해당 버그의 출처에 관계없이 널리 채택되지 않습니다.
Adam Tolley

3
참고로 "gyp"은 "generate your projects"의 약자라고 생각합니다
Tom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.