什么是node-gyp


122

谁能解释我是什么node-gyp以及为什么它使用我的系统文件来构建Node.JS软件包。

  1. 如果Ii建立一个节点项目,并且在node-gyp内部使用。
  2. 然后我只是将该项目焦油并移到另一个系统
  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

Answers:


133

node-gyp是用于编译Node.js插件的工具。Node.js插件是用C或C ++编写的原生Node.js模块,因此需要在您的计算机上进行编译。使用node-gyp之类的工具编译它们之后,就可以通过require()和其他Node.js模块一样访问其功能。

如果您执行了建议的操作,则模块将无法运行,则需要在将程序移至的系统上使用node-gyp对其进行编译/构建。

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

Node.js插件:https : //nodejs.org/api/addons.html


28
必须承认,我看不到使用node-gyp的模块npmjs,我通常在10英里之外运行
PirateApp

38
令人兴奋的是,您现在可以克隆一个用NodeJS编写的(看起来)相对简单的Web应用程序,突然之间,您必须下载软件来编译用C和C ++编写的本机编码。最好的部分是遇到问题时,您会确切地知道如何使用Web设计技能来解决此问题。
Jim Aho

3
@ Mr-Programs它通过绑定进行连接,绑定也需要由您编写
vuza

2
@JimAho理想情况下,通常,代码只是黑盒包装。好处是,您可以使用快速且受良好支持的工具来执行诸如xml解析之类的特定操作,而不必等待可能更慢或更坏的js端口。就是说,我尽可能地选择本机js,但是我不确定该职位是否成立。另外,对于任何不是有意依赖于OS的情况(例如通知),C / C ++都应该具有很高的可移植性。此外,易受错误影响的软件包不会得到广泛采用,无论这些错误的来源如何。
亚当·托利

3
仅供参考,我相信“ gyp”是“生成您的项目”的缩写
汤姆(Tom)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.