
在 Composer 中通过 scripts 定义的自定义命令,若需向底层可执行文件(如 codecept)传递参数,必须使用双短横线 -- 分隔 Composer 参数与目标命令参数,否则参数会被 Composer 解析并报错。
在 composer 中通过 `scripts` 定义的自定义命令,若需向底层可执行文件(如 `codecept`)传递参数,必须使用双短横线 `--` 分隔 composer 参数与目标命令参数,否则参数会被 composer 解析并报错。
当你在 composer.json 中定义如下脚本:
{
"scripts": {
"codecept": "../projectA/vendor/bin/codecept"
}
}
执行 composer codecept bootstrap 是可行的,因为 Composer 会直接调用该路径下的二进制文件。但一旦你尝试添加原生命令支持的选项(例如 --empty),如:
composer codecept bootstrap --empty
Composer 会将 --empty 视为其自身命令的选项(而它并不支持该选项),从而抛出错误:
[Symfony\Component\Console\Exception\RuntimeException] The "--empty" option does not exist.
✅ 正确做法是:在 composer 命令与目标命令参数之间插入 --(双短横线),它告诉 Composer “其后的所有内容不再作为 Composer 的参数解析,而是原样传递给被调用的脚本”。
因此,正确的调用方式为:
composer codecept bootstrap -- --empty
同样地,其他复杂场景也适用该规则:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
带多个选项:
composer codecept run acceptance -- --env=chrome --debug
-
指定配置文件路径:
composer codecept build -- -c ./tests/codeception.dist.yml
⚠️ 注意事项:
- -- 必须紧接在 composer
之后,不能遗漏或错位; - 所有 -- 后的参数将原样透传,不会被 Composer 处理或校验,请确保目标命令(如 codecept)支持这些参数;
- 若脚本定义为 shell 命令(如 "codecept": "php ../projectA/vendor/bin/codecept"),仍需遵循相同规则——-- 是 Composer CLI 的标准分隔符,与是否使用 php 显式调用无关;
- 在 Windows 环境下同样有效,无需额外转义。
? 小技巧:你也可以为常用组合创建更简洁的脚本别名,提升可维护性。例如:
{
"scripts": {
"codecept:bootstrap:empty": ["@codecept bootstrap -- --empty"],
"codecept:run:chrome": ["@codecept run -- --env=chrome"]
}
}
这样即可直接运行 composer codecept:bootstrap:empty,避免重复输入 --。










