Windows/Linux/macOS 跨平台打包神器:pkg 命令完全指南 🚀
【免费下载链接】pkg 项目地址: https://gitcode.com/gh_mirrors/pkg/pkg
pkg 是一个强大的 Node.js 应用程序打包工具,可以将你的 Node.js 项目打包成单个可执行文件,无需在目标机器上安装 Node.js 环境。这个跨平台打包工具支持 Windows、Linux 和 macOS 三大操作系统,让应用程序分发变得前所未有的简单!
📦 pkg 的核心功能特性
pkg 提供了完整的 Node.js 应用程序打包解决方案:
- 跨平台编译:支持一次性为多个平台生成可执行文件
- 依赖打包:自动分析并打包所有项目依赖
- 资源嵌入:将静态资源文件嵌入到可执行文件中
- 代码保护:默认将源代码编译为字节码,保护知识产权
- 零依赖部署:最终用户无需安装 Node.js 或 npm
🔧 安装与基本使用
安装 pkg 非常简单,只需要一个命令:
npm install -g pkg
基本打包命令格式:
pkg [选项] <输入文件>
🎯 目标平台配置
pkg 支持灵活的目标平台配置,使用 -t 或 --targets 选项指定:
# 打包为当前平台
pkg index.js
# 指定特定平台和架构
pkg -t node18-win-x64 index.js
# 同时为多个平台打包
pkg -t node16-linux,node18-macos,node16-win index.js
目标格式为:node版本-平台-架构,例如:
node18-win-x64- Windows 64位node16-linux-arm64- Linux ARM64node18-macos-x64- macOS Intel
⚙️ 配置文件设置
在 package.json 中配置 pkg 选项:
{
"pkg": {
"scripts": "build/**/*.js",
"assets": "views/**/*",
"targets": ["node18-linux-arm64"],
"outputPath": "dist"
}
}
- scripts: 需要编译的 JavaScript 文件
- assets: 需要嵌入的静态资源文件
- targets: 目标平台配置
- outputPath: 输出目录
🚀 高级功能特性
压缩优化
使用压缩减少可执行文件大小:
pkg --compress Brotli index.js
pkg --compress GZip index.js
调试模式
启用调试模式查看打包详情:
pkg --debug app.js -o output
自定义选项
嵌入 Node.js 运行时选项:
pkg --options "expose-gc,max-old-space-size=4096" index.js
💡 实用技巧与最佳实践
1. 处理动态引入
对于动态 require 语句,需要在配置中明确指定文件:
// 这种动态引入需要手动配置
require('./build/' + cmd + '.js');
2. 资源文件访问
在代码中正确访问打包后的资源文件:
// 使用 __dirname 访问打包资源
const assetPath = path.join(__dirname, '../assets/image.png');
3. 原生模块支持
pkg 支持 .node 原生模块,但需要确保目标 Node.js 版本匹配。
🛠️ 环境变量配置
pkg 支持多个环境变量:
# 自定义缓存路径
export PKG_CACHE_PATH=/my/cache
pkg app.js
# 或直接传递
PKG_CACHE_PATH=/my/cache pkg app.js
📊 性能优化建议
- 使用
--compress减少文件大小 - 合理配置
assets和scripts避免打包不必要的文件 - 对于生产环境,考虑禁用调试信息
- 使用合适的 Node.js 版本以减少基础二进制文件大小
🔍 故障排除
常见问题解决方案:
文件找不到错误:检查所有动态引入的文件是否都在配置中声明
原生模块问题:确保目标 Node.js 版本与开发环境一致
权限问题:在 Linux/macOS 上给生成的可执行文件添加执行权限
pkg 为 Node.js 开发者提供了极其便利的应用程序分发方案,无论是商业软件发布还是内部工具分发,都能大大简化部署流程。通过合理的配置和使用,你可以创建出高性能、跨平台的独立可执行文件! 🎉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



