Ошибка может быть вызвана тем, что команда передается по каналу, т.е. prettier
не читает со стандартного ввода, а только при передаче в качестве позиционных аргументов (prettier <input-args>
).Как правило, когда команды передаются по конвейеру, стандартный вывод первой команды подключается к стандартному вводу следующей после нее.
Использование xargs
как раз предназначено для этого.Передайте результат, полученный от предыдущей команды, и передайте его с легкостью.Он должен работать как на FreeBSD, так и на системах на основе GNU.
git diff --name-only HEAD | xargs -I {} prettier --write "{}"
Или, если ваша оболочка довольно новая, и если она поддерживает подстановку процессов, вы можете запустить команду prettier
для каждой строки выводаgit diff
как
while IFS= read -r op; do
prettier --write "$op"
done< <(git diff --name-only HEAD)