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

如何通过GitHub Action在AdonisJS构建时保留build/tmp文件夹?

解决Adonis JS构建时上传目录被删除的问题

你的手动备份步骤完全可行,但属于临时 workaround,操作繁琐且容易遗漏。下面分两种方案给你参考:

一、用脚本自动化你的备份思路

不用手动分步执行,把步骤写成npm脚本一键完成,避免人为失误。在项目根目录的package.json中添加:

"scripts": {
  "build:keep-tmp": "cp -r build/tmp ./tmp-backup && yarn build && cp -r ./tmp-backup build/tmp && rm -rf ./tmp-backup"
}

之后每次构建直接运行yarn build:keep-tmp即可。

注意:Windows系统需把cp换成xcopy,或者安装cross-env、copyfiles这类跨平台工具兼容不同系统。

二、从Adonis配置层面彻底解决(更推荐)

手动备份终究是权宜之计,更省心的做法是从构建规则或上传路径入手:

1. 让构建工具忽略tmp目录

编辑项目根目录的adonisrc.ts,在build配置中添加排除规则,让Adonis构建时不清理build/tmp:

export default defineConfig({
  build: {
    exclude: ['build/tmp/**'], // 添加这行,排除tmp目录
    // 其他原有配置...
  },
  // 其他配置...
})

2. 把上传目录移到build目录外(最优解)

更合理的架构是将用户上传的文件放在build目录之外,避免构建操作影响。比如在项目根目录新建public/uploads,然后修改Adonis的上传配置(通常在config/uploads.ts):

import { join } from 'path'
import { defineConfig } from '@adonisjs/core/config'

export default defineConfig({
  disk: 'local',
  disks: {
    local: {
      driver: 'local',
      root: join(__dirname, '..', 'public', 'uploads'), // 指向build外的uploads目录
      serveFiles: true,
      basePath: '/uploads',
    },
  },
})

这样上传的文件完全脱离构建目录,再也不用担心被清理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:47:20