
如何用一行 PKG_CACHE_PATH 开启二进制缓存让 pkg 打包提速【免费下载链接】pkgPackage your Node.js project into an executable项目地址: https://gitcode.com/gh_mirrors/pk/pkg你肯定也遇到过每次跑 pkg 打包都要重新下载几十到上百 MB 的 Node.js 基础二进制。把 PKG_CACHE_PATH 这一个变量配好重复打包就只下载一次这是 pkg 打包提速里见效最快的一步。场景一本地开发机 —— pkg 缓存配置三种方式设好缓存路径先说代价。pkg 每次打包都会下载与当前系统匹配的 Node.js 基础二进制单份通常 50-100MB。没有缓存时改一行代码、重新打一次包就得再下完整一遍带宽白烧构建时间也被拖长。pkg 的解法就是 PKG_CACHE_PATH它指定 Node.js 打包缓存所在的目录默认值是~/.pkg-cache也可以改成任意路径。缓存路径的三种设置方式# 方式一当前终端会话临时生效 export PKG_CACHE_PATH/my/cache # 方式二内联在单条打包命令前 PKG_CACHE_PATH/my/cache pkg app.js第一种只对当前终端有效关掉窗口就失效第二种只作用于那一条命令。想长期生效执行echo export PKG_CACHE_PATH/my/cache ~/.bashrczsh 用户改成~/.zshrc把导出语句写进 shell 配置之后每个新终端自动带上。场景二团队共享目录 —— 多项目共用同一个二进制缓存池同一台机器上跑多个项目需要的其实是同一批二进制。把 PKG_CACHE_PATH 指向一个共享目录export PKG_CACHE_PATH/data/shared/pkg-cache这一行把缓存落到团队共享路径。任意一个项目先下载后其余项目直接命中缓存整个共享池只下载一次多项目打包都能省时间。场景三CI/CD 流水线 —— 用 actions/cache 缓存目录实现构建加速CI 是重复下载重灾区每次运行都是干净环境不处理缓存就整份重下。用 GitHub Actions 的 actions/cache 把缓存目录持久化下来- uses: actions/cachev3 with: path: ${{ env.PKG_CACHE_PATH }} key: ${{ runner.os }}-pkg-cache-${{ hashFiles(package.json) }}缓存键由运行系统加 package.json 的 hash 拼成系统和依赖没变就命中缓存跳过下载变了才重新拉取。这套 Node.js 打包缓存用法是 CI/CD 构建加速里性价比最高的改法之一。验证与维护看日志确认生效顺手清理过期缓存打一次包盯一下日志 ✅。看到Fetching base Node.js binaries to PKG_CACHE_PATH这句日志出自 lib/index.ts 的核心流程就说明缓存机制在正常工作首次运行会下载二进制后续运行直接跳过下载。缓存只增不减旧版本要定期清。按修改时间清理 30 天没动过的子目录find $PKG_CACHE_PATH -maxdepth 1 -type d -mtime 30 -exec rm -rf {} \;这条命令只删缓存目录下长期未修改的子目录当前在用的版本不受影响。踩坑速查三类高频问题的原因与修复命令Permission denied缓存目录没有写权限。修复chmod -R 755 $PKG_CACHE_PATH给目录补上读写权限。缓存疑似损坏下载或拼装阶段出错、产物跑不起来。修复rm -rf $PKG_CACHE_PATH删掉整个缓存目录重新打包自动重建。路径不生效变量没设置在运行 pkg 的同一个会话里。先跑echo $PKG_CACHE_PATH输出为空就是没设置补上 export 再试。结尾一个变量、一个共享目录、一段流水线缓存配置pkg 缓存体系就配齐了。本地省的是每次几十字节的重复下载团队省的是带宽CI 省的是整轮构建时间。现在就打开终端设好 PKG_CACHE_PATH ⚡第二次打包你就会看到差别。参考资料项目文档README.md核心代码实现lib/index.ts命令行工具lib/bin.ts【免费下载链接】pkgPackage your Node.js project into an executable项目地址: https://gitcode.com/gh_mirrors/pk/pkg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考