node app 打包工具 pkg

Posted 颐和园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node app 打包工具 pkg相关的知识,希望对你有一定的参考价值。

node 打包可执行文件的工具有很多。node-packer 是国人写的,但一年前就停止更新了。而 nexe 一到fetching prebuilt binary 就报错,放弃了,最终选择了 pkg。

命令行打包

pkg -t node10-macos-x64 index.js

package.json 配置

如果不想每次都输入这么多参数,则需要在 packge.json 文件增加一个 bin 和 pkg 选项:

```
"pkg": 
"scripts": [], // 不需要 striped 的 js 文件
"targets": [	// 打包选项,格式为:node版本-平台类型 mac 或 windows-架构
  "node10-win-x64",
  "node10-macos-x64"
],
"output": "proxy" // 可执行文件名,比如 proxy-win.exe 或 proxy-macos
,
"bin": "index.js"  // app 的启动文件
```

然后,你只需要用 pkg . 就可以了。

注:pkg 最多只支持到 node 10 版本。node 11 还暂不支持。

Assets

有一些文件,它不是 js 文件,也没有在代码中 require 过,比如 html 和 css 文件。pkg 就无能为力了。如果想将这些文件也打包到可执行文件中,将它们放到 pakcage.json 的 pkg 的 assets 数组中就可以了,比如:

"assets": [		// 需要被打包的资源文件(即没有在代码中被 require 过的文件)
  "index.html"
],

动态加载的文件

有一些文件,你不想打包进去,比如一些配置文件、json 文件,可以在 require 时指定绝对路径,比如 data 目录下的 users.json 文件:

const users = require(path.join(process.execPath,'../data/users.json'))

然后在打包后,将在可执行文件的同级目录下新建 data 目录,再将 users.json 文件拷贝到 data 目录即可。

这样,以在运行时改变 app 的一些参数。

注意,修改 users.json 文件内容后,需要重启可执行文件才能生效。

以上是关于node app 打包工具 pkg的主要内容,如果未能解决你的问题,请参考以下文章

Mac下PackageMaker工具 打包pkg安装文件的问题

使用pkg打包Node.js应用的方法步骤

ESP 保姆级教程疯狂Node.js服务器篇 ——使用pkg打包nodejs应用,一次打包,到处运行

使用 pkg 打包分发 nodejs 应用

使用带有通知程序的 pkg 构建 node.js 可执行文件

pyinstaller打包失败,在Building PKG报错