如何通过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
相关产品推荐
相关产品推荐

