Nodejs+express 代码工程打包 PKG

本文介绍了如何使用PKG工具将基于Node.js和Express的工程打包成可执行文件,包括安装PKG、配置模板、解决配置文件和资源访问问题,以及修改EXE图标的方法。在打包过程中,需要注意只打包必要文件,允许外部访问静态资源和配置文件,以确保软件的可维护性和适应性。

在上一篇的使用nodejs 客户端js文件,讲到了bytenode打包有限数量的js文件转为字节码。针对我们经常用到的Express框架,如何打包呢?

1.gulp

使用gulp,合并和压缩js、css、html等,一方面,在运行过程中,减少网络传输数据量,另外,也可以初步保护自己的劳动成果,但将整个express工程部署到私有环境中,通常是客户环境,使用Webstorm,即可再次编辑工程,不是很放心。

2.PKG

通过不断的baidu和bing,针对nodejs打包的工具有不少,总体是将js转换为字节码,思前想后,选定了PKG。环境如下:WebStorm 2020.1.1+ Nodejs(V12.16.1 zip版本),最好使用nodejs zip版本,因为pkg打包node环境,可以实现多版本nodejs在同一环境下运行,这点比较强!!

1)安装pkg,即 npm install -g pkg;

 安装过程中出现问题,请更新npm

2)下载运行模板,需要和nodejs及系统类型,一一匹配

https://github.com/zeit/pkg-fetch/releases

Nodejs:fetched-v12.16.1-win-x64、fetched-v12.16.1-linux-x64

相关软件下载地址

链接:https://pan.baidu.com/s/1r-V7--SRytlLPC_-9SZ5fA 
提取码:wxxo

3)配置本地运行模板,运行pkg -t win package.json

会在本地 C:\Users\用户XXX\.pkg-cache\v2.6 文件中,出现downloading的文件,网速会非常慢,容易中断,所以提前下载,并改成上述两个名称,删除掉正在下载的文件。再次运行pkg -t win package.json。若需要对应的离线文件,联系本人。

如果在工程根目录下能生成exe文件,即执行成功。

问题又出现了,整个工程目录,里面有些是配置文件,如果都打包到exe文件中,就无法修改了,尤其是配置化的软件,必须有修改配置文件的地方。要解决此问题,就需要结合自身代码工程编写情况了。

可以参考https://jingsam.github.io/2018/03/02/pkg.html,在package.json中配置。

3.以下几点,是本人亲测:

1)只打包了文件夹,在package.json配置打包

在代码中,使用 app.use(express.static(path.join(__dirname, 'public')));只打包了文件夹,即文件内容丢失,需要在
"assets": ["public/**/*"]配置,即可以打包静态资源。Views资源使用这种方式,实现整体打包。

2)不打包文件夹,使用外部文件夹

在代码中,使用 app.use(express.static('public'));不打包文件夹,即在exe同级目录,存放public文件夹及内容,exe实现外部资源访问。

3)常用的配置文件,使用外部文件夹

在读取配置文件部分,直接使用相对路径读取,pkg在打包过程中,识别为字符串,并非路径,所以不会打包相应的资源,正好使用外部文件夹的方式访问,注意保持与exe的目录相对位置关系。

4.exe图标修改

pkg生成的exe文件自带图标为node的默认图标,来自于fetched-v12.16.1-win-x64,其实fetched-v12.16.1-win-x64是一个可执行空白的应用程序,下载resource_hacker (http://www.angusj.com/resourcehacker/),打开.pkg-cache\v2.6\fetched-v12.16.1-win-x64,将里面的ico修改为自己的ico,注意需要多个尺寸。

5.保存exe,模板中的应用图标随之改变,后期pkg打包生成的exe图标即为设定的图标。至此结束。

6.通过pkg -t linux  package.json生成的linux运行包,直接在linux环境下运行,如果报权限不够,修改当前用户具有该文件的读写权限,完成后,正常运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一醉千秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值