前言
虽然控制台程序本来就是没有界面的,打包成exe有点多余,但是如果想把写好的代码发给一个非程序员使用,可能还要教人家如何装node,如何运行…… 麻烦死了!
本文采用的方法是先用批处理包装,然后再将批处理打包成exe,批处理转exe的工具很多,我这里随便找了一个Bat To Exe Converter来实现。
正式开始
目标
我们肯定希望生成的exe是这样的:
双击即可运行,临时文件不能生成在当前目录(这样看起来才像个独立的exe);
退出程序时自动删除临时文件(不然时间越久临时目录越大);
可以任意设置图标;
虽然文件输出到临时目录,但是工作目录最好是exe的启动目录;
上面1、2、3这三点都比较好实现,关键是第4点。
测试文件
我们写一个最简单的控制台程序,只为了验证当前目录,test.js:
console.log('当前工作目录:' + process.cwd());
批处理封装
批处理可以设置窗口标题以及字体颜色等,所以我们用批处理再包装一层:
@echo off
node test.js
pause
假设以上文件在D:\test下面,我们在E:\exe下面执行call D:\test\test.bat,很显然,由于批处理的默认当前目录在E盘,所以报错:
E:\exe>call D:\test\test.bat