【问题标题】:What is node-gyp什么是节点gyp
【发布时间】:2017-02-05 23:15:00
【问题描述】:

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

  1. 如果我构建了一个节点项目并且它在内部使用了node-gyp
  2. 然后我只是将该项目 tar 并移至不同的系统
  3. 我在那里解压并尝试使用它

这种方法行得通吗?

【问题讨论】:

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

标签: node.js node-gyp


【解决方案1】:

node-gyp 是一个编译 Node.js 插件的工具。 Node.js 插件是原生 Node.js 模块,用 C 或 C++ 编写,因此需要在您的机器上编译。使用 node-gyp 等工具编译它们后,可以通过 require() 访问它们的功能,就像任何其他 Node.js 模块一样。

如果您按照您的建议执行该模块将无法工作,您将需要在您将程序移至的系统上使用 node-gyp 编译/构建它。

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

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

【讨论】:

  • 得承认,我看到一个没有 npmjs 的模块使用 node-gyp 我通常跑 10 英里远
  • 令人兴奋的是,现在你可以克隆一个(看起来)相对简单的用 NodeJS 编写的 Web 应用程序,突然之间你必须下载软件来编译用 C 和 C++ 编写的本机代码。最好的部分是当您遇到问题时,并且您确切地知道如何利用您的网页设计技能来解决这个问题。
  • @Mr-Programs 是通过绑定连接的,也需要你自己编写
  • @JimAho 理想情况下,通常,代码只是黑盒。好处是您可以使用快速且支持良好的工具来执行特定的操作,例如解析 xml,而不必等待可能更慢或更损坏的 js 端口。也就是说,我尽可能喜欢原生 js,但我不确定这个位置是否有根据。此外,对于任何非故意依赖操作系统的情况(如通知),C/C++ 应该是非常可移植的。此外,无论上述错误的来源如何,容易出现错误的软件包都没有得到广泛采用。
  • 仅供参考,我相信“gyp”是“生成您的项目”的缩写
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
相关资源
最近更新 更多