Нет такого файла или каталога при запуске команды из сценария NPM

У меня есть простая команда, которую я хотел бы использовать в своих сценариях NPM. Команда:

cat ./path/**/*.css > ./other/path/plugins.css

Если я запускаю это в своем терминале, это работает. Однако, если я поместил это в сценарий NPM, например:

"scripts" {
     "cat": "cat ./path/**/*.css > ./other/path/plugins.css"
}

Я получу Нет такого файла или каталога.

Любая идея, что может быть причиной?

Спасибо!


person akmur    schedule 07.12.2018    source источник


Ответы (1)


Причина, по которой это не работает, заключается в том, что cat принимает имена файлов в качестве параметров, а звездочки (glob) преобразуются в имена файлов вашей оболочкой (скорее всего, bash).

Причина, по которой он не работает со сценарием npm, заключается в том, что он не запускается в оболочке, которая поддерживает функции, которые вы хотите использовать (расширение глобуса, перенаправление stdout в файл).

Чтобы решить эту проблему, просто запустите его в экземпляре bash:

"scripts" {
     "cat": "bash -c 'cat ./path/**/*.css > ./other/path/plugins.css'"
}
person CYB3R    schedule 07.12.2018