什么是node-gyp?

191

node-gyp 是什么,为什么它会使用我的系统文件来构建 Node.js 包?

如果我构建了一个使用node-gyp的Node项目,然后将该项目打包成 tar 文件并移动到另一个系统中,解压并尝试使用,这样可以吗?


21
它在其 GitHub 页面上进行了描述:https://github.com/nodejs/node-gyp。基本上,`node-gyp` 就像 make 一样。它是一个用于控制 C++ 项目编译过程的工具。只不过,它专门为 node.js 插件(用 C++ 编写的模块)而设计。因此,如果迁移到使用相同 CPU 的不同系统,则可能有效。但是,如果迁移到不同的操作系统或 CPU 上(例如从 x86 到 ARM),则无法工作。对于 Linux,迁移到不同版本的发行版或同一发行版的不同版本可能有效,也可能无效。我不确定是否可以将其迁移到不同版本的 node.js 上。 - slebetman
7
当我运行 yarn why node-gyp 时,它返回的结果是:因为 node-sass,所以我确定它还有其他用途,但如果你或你爱的人被诊断出患有 sass,它可能会出现在你的项目中。 - Kzqai
@slebetman 更改节点版本是行不通的,不确定这是否完全正确,但从我的经验来看,在升级nodejs版本后,您需要删除旧的node-gyp,并在模块安装期间自动在后台重新构建。 - Lukas Liesis
1
为什么它总是坏掉的? - Alper
1个回答

206

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


67
得承认,我看到一个使用node-gyp的模块,通常都会远离npmjs。 - PirateApp
112
现在你可以复制一个似乎相对简单的基于NodeJS编写的Web应用,然后突然之间必须下载用C和C++编写的本机代码编译软件,这很令人兴奋。最棒的部分是当你遇到问题时,你知道如何利用你的网站设计技能来解决它。 - Jim Aho
4
它通过一个绑定连接,这个绑定也需要由你编写。 - vuza
2
理想情况下,代码通常是黑盒的。好处在于,您可以使用快速且得到良好支持的工具来执行特定的操作,例如解析xml,并且无需等待可能更慢或更错误的js端口。也就是说,我更喜欢尽可能使用本机js,但我不确定这个立场是否有充分依据。此外,除了故意依赖于操作系统(如通知)的情况外,C / C ++应该非常可移植。此外,不稳定的软件包无论来源如何都不会被广泛采用。 - Adam Tolley
24
FYI,我认为“gyp”是“generate your projects”的缩写。 - Tom
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接