РЕДАКТИРОВАТЬ: Как уже упоминалось Мари и Джеймсом, если вы хотите только запустить команду, если она существует, npm имеет параметр для этого:
npm run test --if-present
Таким образом, вы можете иметьуниверсальный сценарий, который работает с несколькими проектами (которые могут иметь или не иметь конкретную задачу) без риска получения ошибки.
Источник: https://docs.npmjs.com/cli/run-script
РЕДАКТИРОВАТЬ
Вы можете выполнить grep для проверки слова test:
npm run | grep -q test
это возвращать true, если результат в npm run содержит слово test
В вашемСценарий это будет выглядеть так:
#!/bin/bash
ROOT_PATH="$(cd "$(dirname "$0")" && pwd)"
BASE_PATH="${ROOT_PATH}/../.."
while read MYAPP; do # reads from a list of projects
PROJECT="${MYAPP}"
FOLDER="${BASE_PATH}/${PROJECT}"
cd "$FOLDER"
if npm run | grep -q test; then
npm run test
echo ""
fi
done < "${ROOT_PATH}/../assets/apps-manifest"
Было бы просто проблемой, если бы там было слово test с другим значением. Надеюсь, это поможет