如何将Node.js命令行应用程序转换为单个可执行文件?

3
我建立了一个简单的命令行应用程序,使用 Node.js 平台上的 commander.js。现在我想将它编译成简单的 exe 文件,这样我就可以直接执行它了。

也就是说,我想要一个完整应用的单个可执行文件。

这是我的应用程序结构:

APP_ROOT
  | - package.json
  | - node_modules
  | - node_modules/.bin/myapp.bat
  | - node_modules/myapp/bin/myapp
  | - node_modules/myapp/bin/myapp-action1
  | - node_modules/myapp/bin/myapp-action2

谢谢

2个回答

5
  • 这是我如何将我的Node.js命令行应用程序打包为单个可执行文件
  • 使用npm i -g pkg安装pkg模块
  • 这是我的package.json文件

JSON

{
  "name": "my-app-exe",
  "version": "1.0.0",
  "description": "Myapp-Cli tool as executable",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "myapp",
    "cli",
    "exe"
  ],
  "author": "Shisht",
  "license": "MIT",
  "devDependencies": {
    "myapp": "1.0.0"
  },
  "bin": "node_modules/myapp-cli/bin/cli",
  "pkg": {
    "assets": "node_modules/**/*"
  },
  "help": "pkg . --target host --output myapp-1.0.0-x64.exe --debug"
}
  • myapp打包成myapp.exe的命令: pkg . --target host --output myapp-1.0.0-x64.exe --debug

2

在没有任何Node运行时的情况下运行Node应用程序是不可能的,因此,如果您希望将您的程序作为独立的.exe文件分发,您将不得不将Node本身与您的代码一起捆绑到该可执行文件中。有各种工具可以为您完成此操作,例如EncloseJS


大小不重要,是的我需要将 node.exe 嵌入打包后的可执行文件中,但我应该怎么做呢?你知道 babel 命令行工具吗?你能否请提供一个可用的例子以将其打包为单个可执行文件? - ssp singh
EncloseJS在Windows上安装失败,因为无法从https://enclosejs.s3.amazonaws.com/enclose-v0.12.15-win32-5c54091.exe.sha256下载资源。 - ssp singh
@sspsingh:Babel在这里是无关紧要的 - 它将编译您的JavaScript以适用于旧版本的浏览器/Node,但它对您如何打包它没有影响。那个错误看起来像是您的网络出了问题。 - Joe Clay
我的Node.js shell应用程序就像babel或任何其他包一样,可以在shell上使用。所以,如果你能尝试使用babel,我会修复它以使其与我的应用程序配合工作,这就是为什么我问的原因? - ssp singh
@sspsingh:哦,我明白你的意思了!在EncloseJS的GitHub上有如何打包各种现有命令行工具的示例 - 我建议以此作为起点。 - Joe Clay

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