Я знаю, что здесь много похожих вопросов, но я не нашел ответ, который искал. Вот команда, которую я пытаюсь использовать в сценарии npm.
rm -rf public/!(*.md)
Я включил расширенное глобирование с помощью команды shopt -s extglob
, и команда прекрасно работает в Терминал. У меня проблема в том, что она не запускается, когда я использую ту же команду, что и скрипт npm.
The Script
"scripts": {
// ...
"clean:public": "rm -rf public/!(*.md)",
//...
}
Ошибка, которую я получаю в своем терминале при запуске сценарий
> rm -rf public/!(*.md)
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `rm -rf public/**/!(*.md)'
Возможные решения, которые не удалось ...
- Цитирование глобуса
rm -rf 'public/!(*.md)'
- Это избавило от ошибки, но сценарий не Не удаляйте файлы.
- Я также пытался заключить в кавычки глобус с помощью двойных кавычек и получил тот же результат.
- Я попытался убрать скобки и получил json ошибка синтаксического анализа.
В чем проблема ...
Я только что узнал, что npm сценарии запуска не используют оболочку пользователя, который запускает команду , Я не уверен, как решить эту проблему, разве что путем установки дополнительных пакетов npm? Если это так, какие пакеты я должен установить?