pkg可以直接将nodejs项目打包成可执行文件,直接可以在没有node环境下的freebsd,linux,alpine,macos,win上运行。
pkg打包的原理
pkg实际上并不是直接将程序转换成可执行文件,而是将node环境一起打包到了程序中,这样就可以做到不用在没有node环境下的电脑上运行node项目了,是不是很方便。下面我就将带领大家一起来看下如何使用pkg打包。测试用例使用的是nodejs的express使用场景
在没有来源的情况下制作商业版的应用程序
在没有来源的情况下制作应用的演示/评估/试用版
立即为其他平台制作可执行文件(交叉编译)
制作某种自解压存档或安装程序
无需安装Node.js和npm来运行打包的应用程序
无需下载无数个文件npm install来部署您的应用程序。将其部署为单个文件
将您的资产放在可执行文件中,使其更具可移植性
针对新的Node.js版本测试您的应用程序而不安装它
举例简单看下项目的目录结构和代码,首先你得初始化一个express项目,添加express的依赖


运行一些index.js文件,浏览器打开看下效果

我们这是直接在项目中运行的,结果如上图所示,现在我们的项目还是一个js文件,然后相互依赖,接下来我们使用pkg
安装(因为电脑是windows系统,就在windows系统下运行)
安装非常简单,需要全局安装
npm install -g pkg
然后我们使用pkg --help先看下有哪些可用的命令
pkg可以一次为多个目标计算机生成可执行文件。可以通过--targets 选项指定以逗号分隔的目标列表。规范目标由3个元素组成,例如用短划线分隔,node6-macos-x64或者node4-linux-armv6
配置
打包过程中pkg会解析项目中的资源,检测到require,遍历项目的依赖项并将它们包含到可执行文件中。有些时候我们需要手动加入资源文件路径,比如我们这个项目中的views,我们需要改一下package.json
"pkg": { "assets": "views/**/*" }

打包(命令很简单)
pkg index.js
然后需要等待一段时间,最终结果如下

我们打开我们的index-win.exe测试下

运行成功,然后打开浏览器,和之前一样的效果
网友回复
如何将linux服务器的文件目录映射到windows电脑磁盘?
Docling 与 MarkItDown 两个库有啥不同?
豆包收费后国产其他ai软件也会跟进收费吗?
JPEG 与 HEIF图片格式区别?
centos7版本太旧无法安装python3.11,如何在docker中运行python3.11?
python如何做个RPA按键精灵的程序?
写一个windows的cmd的python代码如何在命令行中捕获获取复制粘贴的图片?
如何将别人爆款的抖音短视频短剧文案提取为seedance2的提示词?
阿里云域名dns云解析10万次日限额如何应对?
windows电脑如何提交上架ipa苹果应用?


