微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NodeJs 应用程序通过将其作为模块添加到节点源并构建它来编译为二进制文件

如何解决NodeJs 应用程序通过将其作为模块添加到节点源并构建它来编译为二进制文件

最近我开始着手一个项目,我想为客户提供一个可执行的独立版本。我发现最流行的是 nexe 和 pkg,所以我克隆了它们的源代码并扔掉了代码,老实说,大部分都没有理解。 (我不能使用我不理解的东西来编译我的代码以发送给客户)

因此,我周末的大部分时间都在四处寻找有关该过程的线索,包括阅读 nodejs 源代码的部分内容及其有关 node-gyp 的文档,这是他们的原生构建工具。以下是我抛出的所有文章和资源(有些很快,有些则多次):

  1. https://github.com/vercel/pkg/issues/42
  2. https://github.com/pmq20/node-packer
  3. https://github.com/nodejs/node-gyp
  4. http://www.jedi.be/blog/2013/05/14/Compiling%20-%20packaging%20a%20nodejs%20project%20as%20a%20single%20binary/
  5. https://groups.google.com/g/nodejs/c/mPIcq5mHihM
  6. Secure distribution of NodeJS applications
  7. How to compile NPM modules to binaries for all platforms
  8. https://github.com/vercel/pkg
  9. https://github.com/nodejs/quic/blob/master/BUILDING.md
  10. https://cylonjs.com/blog/2014/11/19/creating-multiplatform-precompiled-binaries-for-node-modules/
  11. https://medium.com/jspoint/a-simple-guide-to-load-c-c-code-into-node-js-javascript-applications-3fcccf54fd32

我从整个事情中了解到,我们基本上将我们的 nodejs 应用程序作为一个模块包含在 nodejs 源代码中,并重建了 node 可执行文件。然而,我仍然无法掌握的是整个事情是如何联系起来的。

@crownlessking 在我测试过的另一个答案中写了一个小脚本:

#!/usr/bin/env node

// Grab provided args.
const [,...args] = process.argv

// Print hello world provided args
console.log(`Hello World ${args}`)

您可以通过将权限 chmod +x mytestfile.js 转换为可执行文件并在没有节点的情况下运行:./mytestfile.js(这不是自包含的,您的系统上仍然需要节点,它是不是二进制,这意味着源代码是可见的,但非常好,而且感觉方向正确)

我不明白的是如何将这样的东西作为模块实现到 nodejs 源代码中并将其用作入口点?

另一件事是,在这种情况下构建可能需要很长时间,而当我在 https://github.com/nexe/nexe/releases 的 .nexe 文件夹中发布它们时,nexe 可以在几秒钟内构建我的完整 crud 应用程序。

这些版本是什么?如果是二进制版本,nexe 如何将我的应用程序添加到它们作为入口点?

我真的很抱歉这个问题太长了,但这让我很困惑,我虽然在这个领域比我有更多知识的人可以提供帮助,而且很可能我在阅读的资料中遗漏了一些东西

>

先谢谢你:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?