目标
如果.env
缺少,则停止运行composer安装
composer.json
片段
"scripts": {
"pre-install-cmd": "[[ -a .env ]] || echo '.env missing. please create .env' 1>&2 && exit 1;"
},
输出
$ composer install
.env missing. please create .env
Script [[ -a .env ]] || >&2 echo '.env missing. please create .env' && exit 1; handling the pre-install-cmd event returned with an error
[RuntimeException]
Error Output: .env missing. please create .env
所需
与上面相同,但没有cruft,特别是立即回响的&冗余.env missing. please create .env
问题
如何防止composer立即回显该字符串-q
开关也会发生这种情况
我想知道这应该如何工作?
您要求Composer运行您的脚本。该脚本创建输出,并将其显示出来。
现在,该脚本的返回代码发出了一个错误条件的信号。剩下的就交给作曲家了。通知用户哪个脚本失败是一个好主意(这会直接解释回显输出后的行),因为脚本不必回显任何内容,并且您可以在那里自由运行多个脚本行。
然后,一般的Composer错误显示在另一个时间开始,再次声明错误条件产生了一些输出。
现在我想知道你想压制什么。第一行?那就什么都不要回响。
以后还有线路吗?运气不好,这就是Composer通常处理错误的方式。
回过头来看,我会问为什么Composer不应该被允许安装依赖项?Composer不需要该文件,如果您的代码需要它,它应该为用户提供一种更简单的方法来创建该文件,或者检查它是否存在,并以合理的默认值假设做出反应,或者拒绝工作,这将使您能够更好地控制显示错误消息的情况。