Pre-launch任务仅在永久运行/调试配置中生效,临时配置不支持;需通过Alt+Shift+F10→0→+选择模板创建永久配置,并在Pre-launch中按需添加Run external tool、Run npm script或Run Gulp task等任务类型。

Pre-launch任务不执行?先确认运行配置类型
PhpStorm 的 Pre-launch 任务只在「永久运行/调试配置」中生效,临时配置(右键 → Run xxx 生成的半透明图标)不支持添加 Pre-launch 步骤。如果点了“运行”但编译没触发,大概率你还在用临时配置。
必须手动创建永久配置:按 Alt+Shift+F10 → 0 打开运行配置对话框 → 点 + → 选对应模板(如 Node.js、Gulp.js、npm),再配置 Pre-launch。
- Node.js 配置下 Pre-launch 可加
npm run build或gulp build - PHP CLI 运行配置不能直接跑
composer install,得用External tool或Command line类型前置任务 - 如果是 Docker Compose 启动的服务,Pre-launch 里加
docker-compose build要确保当前目录是docker-compose.yml所在路径
Pre-launch里该选哪种任务类型?别乱套模板
不是所有任务都叫“External tool”——PhpStorm 提供三类 Pre-launch 可选项,适用场景完全不同:
-
Run external tool:适合调用已注册的命令行工具,比如你已配好php-cs-fixer或sass,这里直接选它就行 -
Run npm script:仅对package.json里的scripts生效,填build就等价于npm run build;注意它会自动使用项目级 Node 解释器,不认全局 npm -
Run Gulp task:专为gulpfile.js设计,填default或watch即可;但它依赖你已在运行配置里正确设置了gulpfile路径,否则报task not found
常见错误是:想跑 composer install 却选了 Run npm script,结果提示 command not found——Composer 不是 npm 脚本,得走 Run external tool 或手动填 Command line。
立即学习“PHP免费学习笔记(深入)”;
Command line任务参数写错,静默失败无提示
选 Run command line 是最灵活也最容易翻车的方式。它不校验命令是否存在,输错就跳过,控制台也不报错,看起来像“什么都没发生”。
- Windows 下写
npm run build前要加cmd /c,否则不识别npm:正确写法是cmd /c npm run build - macOS/Linux 若用 nvm 管理 Node,直接写
npm可能找不到命令——因为 PhpStorm 图形界面启动时不加载 shell profile;稳妥做法是写绝对路径,比如/opt/homebrew/bin/npm run build -
Working directory必须设为$ProjectFileDir$;设成$FileDir$会导致在子目录里右键运行时,命令在错误路径下执行 - 需要等待命令完成再启动主程序?勾选
Wait for batch job to finish before starting application;不勾选的话,Node.js 服务可能在构建还没完时就启动,报Cannot find module './dist/index.js'
多个Pre-launch任务顺序和失败处理
Pre-launch 区域支持添加多个任务,它们按从上到下的顺序串行执行。但默认策略是“任意一个失败就中断”,这点容易被忽略。
- 第一个任务是
composer install,第二个是php artisan migrate:fresh;如果 composer 因网络失败退出,migration 根本不会跑 - 想让 migration 即使 composer 失败也执行?没法直接设“忽略错误”,只能把两个命令合并成一行:
composer install || true && php artisan migrate:fresh - 调试时想跳过某步编译?别删任务,临时取消勾选左侧的复选框即可,比反复增删快得多
- 任务输出不显示在 Run 工具窗口?默认只显示主程序输出;想看 Pre-launch 日志,得在运行配置的
Logs页签里手动添加对应命令的 stdout/stderr 输出路径
真正麻烦的不是加任务,而是当项目结构变复杂(比如前端用 Vite、后端用 Laravel、CI 用 Makefile),Pre-launch 很快变成一堆脆弱的 shell 拼凑——这时候该考虑把构建逻辑收口到 package.json 或 Makefile,让 PhpStorm 只调用一个入口命令。


















