3分钟搞定!pkg构建脚本配置模板(附5个实战案例)

3分钟搞定!pkg构建脚本配置模板(附5个实战案例)

【免费下载链接】pkg 【免费下载链接】pkg 项目地址: https://gitcode.com/gh_mirrors/pkg/pkg

你还在为Node.js项目打包烦恼?本文提供即copy即用的pkg构建脚本模板,3分钟完成配置,解决跨平台部署难题。读完你将获得:

  • 标准package.json scripts配置模板
  • 5种常见场景实战案例
  • 静态资源打包最佳实践
  • 调试与测试技巧

什么是pkg(打包工具)

pkg是一款能将Node.js项目打包成可执行文件(Executable File)的工具,支持Windows、macOS和Linux三大平台。通过简单配置即可告别"必须安装Node环境"的部署痛点,特别适合分发独立应用程序。

项目核心代码入口:lib/bin.ts

基础配置模板

以下是适用于大多数项目的基础配置,直接复制到你的package.json中即可使用:

{
  "scripts": {
    "pkg:win": "pkg . --targets node18-win-x64 --output dist/app-win.exe",
    "pkg:mac": "pkg . --targets node18-macos-x64 --output dist/app-mac",
    "pkg:linux": "pkg . --targets node18-linux-x64 --output dist/app-linux",
    "pkg:all": "npm run pkg:win && npm run pkg:mac && npm run pkg:linux",
    "pkg:clean": "rimraf dist/*"
  },
  "pkg": {
    "assets": ["views/**/*", "public/**/*"],
    "targets": ["node18-win-x64", "node18-macos-x64", "node18-linux-x64"],
    "outputPath": "dist"
  }
}

实战场景案例

1. Express应用打包

以examples中的Express项目为例,需要特别处理视图文件和静态资源:

examples/express/package.json配置:

{
  "pkg": {
    "assets": ["views/**/*"],
    "targets": ["node18"]
  }
}

对应的入口文件examples/express/index.js需使用正确路径:

// 必须使用__dirname确保打包后资源可访问
app.use('/', express.static(__dirname + '/views'));
app.get('/', function (req, res) {
  res.sendFile(__dirname + '/views/index.html');
});

2. 多平台并行构建

在项目根目录的package.json中配置并行构建命令:

"scripts": {
  "pkg:parallel": "npm-run-all --parallel pkg:win pkg:mac pkg:linux"
}

需要先安装并行执行依赖:npm install npm-run-all --save-dev

3. 包含原生模块项目

处理如bcrypt等包含原生模块的项目,需在package.json中指定node版本:

"pkg": {
  "targets": ["node18-win-x64"],
  "scripts": "build.js",
  "assets": "node_modules/bcrypt/**/*"
}

相关原生模块处理逻辑:lib/fabricator.ts

4. 最小化可执行文件

通过压缩和裁剪实现最小体积打包:

"scripts": {
  "pkg:min": "pkg . --targets node18-linux-x64 --compress GZip --output dist/app-min"
}

压缩算法实现:lib/compress_type.ts

5. 测试驱动的打包流程

集成测试确保打包质量,参考项目根目录package.json的测试脚本:

"scripts": {
  "test:pkg": "npm run build && pkg . && ./dist/app-linux --test",
  "ci": "npm run lint && npm test && npm run test:pkg"
}

完整测试案例:test/test-50-package-json/

常见问题解决

静态资源找不到

确保:

  1. assets配置正确:"assets": ["views/**/*"]
  2. 代码中使用path.join(__dirname, 'views')而非相对路径
  3. 检查lib/walker.ts中的资源遍历逻辑

打包后运行报错

  1. 检查Node.js版本兼容性,参考test/test-50-package-json-6/
  2. 使用pkg --debug模式生成调试信息
  3. 验证依赖是否全部包含,可参考dictionary/中的模块定义

项目资源

通过以上模板和案例,你可以快速实现Node.js项目的跨平台打包。更多高级配置可参考项目源码或提交issue获取支持。

如果觉得本文有帮助,请点赞收藏,下期将带来"pkg高级优化:启动速度提升50%的实战技巧"。

【免费下载链接】pkg 【免费下载链接】pkg 项目地址: https://gitcode.com/gh_mirrors/pkg/pkg

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值