You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单Heroku dyno运行多个package.json构建流程的最佳方案是什么?

方案1:使用可遍历的独立构建脚本(最推荐)

这是适配你后续新增30款游戏需求的最优解,不需要每次新增游戏就修改构建配置,核心逻辑是自动遍历games目录下的所有游戏项目执行构建:

  1. 项目根目录新建构建脚本build-all.sh,内容如下:
#!/bin/bash
set -e # 任意步骤执行失败立即终止构建,避免线上出现不一致的版本
# 构建主应用
echo "构建主应用中..."
npm run production
# 遍历games下所有子目录
for game in ./games/*/; do
  # 仅处理包含package.json的合法游戏目录
  if [ -f "${game}package.json" ]; then
    game_name=$(basename "$game")
    echo "正在构建游戏:${game_name}"
    # 进入对应目录执行构建
    cd "$game"
    # 可选:用npm ci替代npm install,严格按照package-lock.json安装依赖,构建稳定性更高
    npm ci
    npm run production
    # 返回项目根目录
    cd ../../
  fi
done
echo "所有项目构建完成"
  1. 给脚本添加执行权限,本地执行以下命令:
chmod +x build-all.sh
  1. 修改package.json中的heroku-postbuild配置:
"heroku-postbuild": "./build-all.sh"

后续新增游戏时,只需要将游戏项目放到games目录下即可,不需要修改任何构建配置。

方案2:优化构建缓存降低构建耗时

随着游戏数量增多,全量构建可能触发Heroku默认15分钟的构建超时,你可以通过配置缓存减少重复安装依赖的时间:
在根目录package.json中添加cacheDirectories字段,Heroku会自动缓存这些目录的内容,避免每次构建重新下载依赖:

"cacheDirectories": [
  "node_modules",
  "games/checkers/node_modules",
  "games/chess/node_modules",
  "games/mahjongg/node_modules"
]

新增游戏时同步更新这个配置即可,如果希望进一步简化,也可以修改构建脚本自动生成该配置。

可选优化:增量构建

如果30款游戏全量构建耗时过长,可以在构建脚本中增加git变更校验逻辑,仅构建上次发布后代码有变更的游戏,能大幅降低构建耗时。

内容的提问来源于stack exchange,提问作者Derrick Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:48:04