前言
- 将node项目打包成exe后,就可以脱离node环境,不需要安装一堆依赖
- 打包的方式网上有挺多的,本文使用pkg进行打包教学。
- pkg原理:pkg实际上并不是直接将程序转换成可执行文件,而是将node环境一起打包到了程序中,这样就可以做到不用在没有node环境下的电脑上运行node项目
全局安装pkg
npm install -g pkg
配置package.json
pkg的参数不止以下列出的,以下仅展示笔主需要的部分
package.json
"scripts": {
"dist": "pkg . -t win -o dist/ajlocal.exe"
},
"bin": "index.js",
"pkg": {
"assets": [
"certs/",
"routerHandles/",
"routers/"
]
}
命令|参数讲解:
- bin 项目入口文件
- pkg .:自动寻找项目的package.json文件,然后再找bin字段的入口文件
- -t:打包的目标平台,win即代表windows,其他平台例如linux,macos
- -o:输出exe的路径,不指定文件名则默认为项目名
- assets:静态资源文件的路径,支持通配符,不加则静态资源不会被打包进exe,可能导致项目运行报错
项目目录
为了让读者更好的理解上方的package.json,这边放下项目目录截图
打包
npm run dist
首次运行上面的命令后,会自动下载相应平台的打包文件
例如上图中正在下载的文件是 fetched-v18.5.0-win-x64 ,这个过程挺漫长的。
如果有条件的话挂个梯,手动上GitHub下载:
- 下载:点我跳转下载页
- 找到上图中对应平台版本的文件并下载,例上图中是 v18.5.0-win-x64
- 下载后将文件名改成和上图一样,即 fetched-v18.5.0-win-x64
- 将文件移动至目录 C:\Users\daowuya\.pkg-cache\v3.4
dawouya代表用户名 - 重新运行 npm run dist
- 此时就打包好了
隐藏运行窗口,设置开机自启
注:需要保证下列的路径都是纯英文,否则可能出现意料外的错误
- 新建文件夹,例如 ajlocal ,将打包好的 ajlocal.exe 文件移进去
- 在目录下新建 ajlocal.bat ,替换成你的exe路径并保存
call C:\Users\daowuya\Desktop\ajlocal\ajlocal.exe
- 在目录下新建ajlocal.vbs,替换成你的bat路径并保存
set ws=WScript.CreateObject("WScript.Shell") ws.Run "C:\Users\daowuya\Desktop\ajlocal\ajlocal.bat",0
此时双击运行vbs文件就实现了隐藏运行窗口,如果需要设置开机自启,请继续往下
- 将vbs文件移动到目录 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
- 重启电脑即可自运行
那么如何在没有窗口的情况下关闭正在运行中的项目?
- 进入任务管理器(Ctrl+Alt+Del)
- 后台进程中有个 Node.js JavaScript Runtime ,右击-结束任务