先说一下常见的打包成一个Exe文件的方式:
pkg:最新版本5.8.1.已放弃维护,20以上都不支持,也有能折腾的,但没必要。
nexe:太老了,早就不维护了,用不上。
最新官方解决方案:
SEA,SEA,SEA,SEA(single executable applications)
执行前提:
只支持commonJs引入方式
只支持单个文件 ,所以可以用ncc将所有文件打包成一个独立的js文件
命令集,分别执行以下命令就行,//双斜框后面的是注释,不要复制
1.安装ncc,合并应用为一个js文件
npm i @vercel/ncc ///安装ncc,将应用打包成一个js文件
2.使用ncc打包应用
ncc build main.js -o dist
期中main.js是我的一个入口文件,可以换成自己的。最终会自动生成dist这个目录,在这个目录里面有一个index.js,把它复制到根目录。如果重名,修改一下成别名就行。
3.在根目录新建一个sea-config.json,写入如下内容,其中index.js是从dist目录复制过来的,由上一步生成的。
4.生成要注入的blob文件 ,即上面的output写的,输入以下命令
node --experimental-sea-config sea-config.json
5.创建可执行副本
node -e "require('fs').copyFileSync(process.execPath, 'hello.exe')"
6.生成sea,单个应用文件。
npx postject hello.exe NODE_SEA_BLOB index.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2
生成的这个单文件 ,就可以 双击打开,可以 在命令行cmd中使用了。