什么是 pkg?
是一个命令行工具,能将 Node.js 项目及其依赖打包成一个单独的可执行文件。用户无需安装 Node.js 环境即可运行你的程序。支持的操作系统包括:
- Windows (生成)
- macOS (生成二进制文件)
- Linux (生成二进制文件)
安装 pkg
通过 npm 全局安装或作为项目依赖安装:- # 全局安装(推荐)
- npm install -g pkg
- # 或作为项目开发依赖安装
- npm install pkg --save-dev
复制代码 基本使用
步骤 1:准备你的 Node.js 项目
假设你有一个简单的脚本:- // app.js
- console.log("Hello from pkg!");
复制代码 步骤 2:通过命令行打包
在终端运行以下命令:- pkg app.js --targets node18-win-x64,node18-macos-x64,node18-linux-x64 --output myapp
复制代码
- : 指定目标平台和 Node.js 版本(例如表示 Node.js 18 + Windows 64位)。
- : 输出文件名(会根据平台自动添加后缀,如)。
步骤 3:运行生成的可执行文件
生成的(Windows)或(macOS/Linux)可直接运行,无需 Node.js 环境。
配置 package.json
更推荐在中配置 pkg 参数:- {
- "name": "myapp",
- "version": "1.0.0",
- "scripts": {
- "build": "pkg . --targets node18-win-x64,node18-macos-x64,node18-linux-x64 --output myapp"
- },
- "pkg": {
- "assets": ["public/**/*", "views/**/*"], // 包含静态资源
- "scripts": ["scripts/*.js"] // 包含额外脚本
- }
- }
复制代码 运行即可打包。
处理资源文件
如果你的项目包含静态文件(如图片、HTML 模板),需注意:
- 相对路径问题:使用或确保路径正确。
- 在 pkg.assets 中声明资源:
- {
- "pkg": {
- "assets": "public/**/*"
- }
- }
复制代码
高级用法
指定 Node.js 版本和平台
支持的平台列表:- pkg -h # 查看所有支持的 target 组合
复制代码 打包整个项目
直接打包的入口文件:处理环境变量
在代码中通过判断是否在打包环境中运行:- if (process.env.PKG) {
- console.log("Running in packaged mode!");
- }
复制代码 常见问题
问题 1:动态导入模块失败
- 原因:无法处理动态(如
- require(path.join(__dirname, file))
复制代码 )。
- 解决:在中预声明所有可能动态加载的文件。
问题 2:文件路径错误
- 原因:打包后文件系统路径变化。
- 解决:使用
- path.dirname(process.execPath)
复制代码 获取可执行文件所在目录。
问题 3:缺少依赖
- 原因:未在中声明依赖。
- 解决:确保所有依赖在的中。
示例:打包 Express 应用
- 项目结构:
- my-express-app/
- ├── app.js
- ├── public/
- │ └── index.html
- └── package.json
复制代码 - 代码:
- const express = require('express');
- const path = require('path');
- const app = express();
- app.use(express.static(path.join(__dirname, 'public')));
- app.listen(3000, () => {
- console.log('Server running on port 3000');
- });
复制代码 - 配置:
json- {
- "pkg": {
- "assets": "public/**/*"
- }
- }
复制代码 - 打包命令:
- pkg app.js --targets node18-win-x64 --output my-express-app
复制代码
总结
- 使用可轻松将 Node.js 项目转换为可执行文件。
- 注意处理静态资源路径和动态模块加载。
- 通过配置更便捷。
到此这篇关于将Javascript打包成exe可执行文件的文章就介绍到这了,更多相关js打包成exe可执行文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://www.jb51.net/javascript/339497fjw.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|