create-project 不会自动清理日志和临时文件,因其仅下载解压模板并运行 composer install,不触发 post-install-cmd 或任何清理逻辑;“自动清理”完全依赖模板包自身 composer.json 中配置的 post-create-project-cmd 脚本。

不能直接靠 create-project 自动清理日志和临时文件——它本身不触发任何清理逻辑,必须靠项目模板包内预置的 post-create-project-cmd 脚本实现。
为什么 create-project 不会自动清理?
create-project 的本质是:下载模板包 → 解压到目标目录 → 运行 composer install(除非加 --no-install)。它不执行 post-install-cmd,也不清理任何文件。所谓“自动清理”,全依赖你用的模板包是否在自己的 composer.json 中定义了 post-create-project-cmd。
- 如果你用的是官方
laravel/laravel或symfony/website-skeleton,它们默认不带清理脚本 - 如果你用的是团队自建的模板包,且里面写了
"post-create-project-cmd": ["@clean:logs"],那才会触发 - 直接在本地
composer.json里加post-create-project-cmd没用——create-project还没把你的项目文件拉下来,根本读不到
如何让模板包支持创建后自动清理?
关键是在模板包(即被 create-project 引用的那个包)的 composer.json 中配置 post-create-project-cmd,并绑定一个安全、跨平台的清理脚本:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 不要写
rm -rf storage/logs/*—— Windows 下会失败 - 推荐封装为 PHP 脚本,例如
scripts/clean-after-create.php,内容包含:is_dir()判断、array_map('unlink', glob())删除文件、rmdir()+mkdir()重建空目录 - 在模板包的
composer.json中声明:"post-create-project-cmd": ["php scripts/clean-after-create.php"] - 确保该脚本只清理明确路径(如
storage/logs/、storage/framework/cache/),绝不碰.env、vendor/或public/storage等运行时必需目录
常见误删场景与规避方式
很多团队在模板中加了清理脚本,结果新项目一创建就报错,根源在于路径判断缺失或权限错位:
-
storage/logs/不存在?脚本应先mkdir -p storage/logs再清空,否则glob('storage/logs/*')返回空数组,看似成功实则漏删 - CI 环境下
storage/目录可能被挂载为只读卷,脚本需提前is_writable('storage/logs')检查,失败则exit(0)跳过而非报错中断 - 误删
storage/framework/views/.gitkeep?清理时加白名单过滤,或改用find storage/logs -type f -delete,跳过目录项 - Linux 下
chmod 755 storage/logs是必要兜底,否则后续php artisan log:clear可能因权限拒绝写入
真正起作用的不是命令本身,而是模板包的可复现性。如果清理逻辑散落在 CI 脚本或部署文档里,下次有人 create-project 就会漏掉——只有把它固化进模板包的 post-create-project-cmd,才能保证每次新建项目都一致干净。










