Как использовать отрицание в шаблоне глобуса сценария npm? - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь создать сценарий clean npm, но продолжаю либо получать сообщение об ошибке в консоли, либо желаемый эффект не происходит. Я пытаюсь удалить все корневые файлы JavaScript, кроме некоторых файлов конфигурации.

Следующее удаляет все файлы, игнорируя синтаксис отрицания

"clean": "rm -rf lib [a-z].js !*.config.js !*.support.js"

Следующее выдает ошибку в консоли

"clean": "rm -rf lib !(*.config|*.support).js"
Syntax error: "(" unexpected

1 Ответ

0 голосов
/ 27 января 2019

Используйте rimraf и оберните сложный шаблон (ы) глобуса в двойные кавычки, экранированные JSON, т.е. \"...\"

Например:

"clean": "rimraf lib \"!(*.config|*.support).js\""

Этот пример (выше)

  1. Удаляет каталог lib из корня каталога проекта.
  2. Удаляет все файлы .js из корневого каталога проекта. Однако файлы, заканчивающиеся .config.js или .support.js (такие как foobar.config.js и quux.support.js), будут отменены.

Редактировать: Используя следующую команду bash find через скрипт npm, также достигается желаемый результат:

"clean": "find . \\( -name '*.js' -o -name 'lib' \\) -not \\( -name '*.config.js' -o -name '*.support.js' \\) -maxdepth 1 -exec rm -rf {} \\;"

Однако я бы выбрал вышеупомянутый rimraf подход для большей переносимости между платформами, включая Windows cmd.exe

...