pkg可以把node项目编译成二进制文件,使得其可以在没有node环境的服务器上面运行
打开终端输入以下命令来安装pkg包
npm install -g pkg
修改项目目录下的package.json,添加以下配置项,其中node的版本应该跟你本地node版本一致,其中bin属性是pkg索要编译的目标目录
{ "scripts":{ "pkg:win": "pkg . -t node18-win-x64 -o app-win --debug", "pkg:mac": "pkg . -t node18-mac-x64 -o app-mac --debug", "pkg:linux": "pkg . -t node18-linux-x64 -o app-linux --debug" }, "bin": "dist/main.js", }
在用pkg打包之前先将项目编译一次,因为pkg包不能识别typescript文件
npm run build
然后执行pkg打包命令
npm run pkg:win
如果出现找不到module的情况可以按照下面方式配置package.json,注意这个pkg和scripts同级
{ "pkg": { "assets": [ "node_modules/sqlite3" ], "outputPath": "dist/", "targets": [ "node18-win-x64", "node18-linux-x64" ] }, }
像sqlite3或者其他一些包在win下打包成linux二进制可能不能被正确编译,这个时候只能本地开一个虚拟机编译重复以上操作,或者在服务器上安装node、npm然后用npm install安装缺失的包