0%

node | pkg

这个可以将 node.js 项目打包成平台执行文件,如 exe

参考资料

使用

以 windows 为例。

npm install -g pkg

pkg入口配置

pkg 执行打包的原理就是从入口文件开始,根据相关依赖顺藤摸瓜地执行打包过程,显然这个入口文件与 node 应用程序的自身是一样的。在配置文件 package.json 里,需要加上 bin 属性,专门指定 pkg 的执行入口,入口可以有多种方式:

package.json

1
2
3
4
5
{
...
"bin": "./service.js"
...
}

一个例子是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"name": "test",
"version": "1.1.7",
"description": "",
"main": "play.js",
"bin": "game_offline.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"bot",
"game",
"markdown"
],
"author": "",
"license": "MIT",
"dependencies": {
"commander": "^2.20.0",
"yamljs": "^0.3.0"
},
"devDependencies": {
"eslint": "^7.32.0",
"pkg": "^5.8.0"
}
}

使用

比如

pkg -t node10-win-x64 package.json

其中

-t 用来指定打包的目标平台和 Node 版本,如-t node12-win-x64,node12-linux-x64,node12-macos-x64,可以同时打包3个平台的可执行程序

有的时候,pkg 打包非常慢,这是因为,他需要下载一个辅助包。

你可以离线下载

我本地是 node10win 所以才下载了这个。

将这个文件名的 node 替换成 fetched 。改名为 fetched-v10.24.1-win-x64

将这个文件放在

C:\Users\Asai(你的用户名).pkg-cache\v3.4(你的版本号)

这样打包就非常快了。

其它

关于静态文件啥的,请参考

请我喝杯咖啡吧~