Ваш шаблон глобуса **/*.test.js
должен быть заключен в двойные кавычки ("..."
), однако, поскольку в JSON указано, что их необходимо экранировать обратной косой чертой, то есть \"...\"
.
Ваша команда test
должна быть изменена на следующее:
"test": "mocha --require babel-core/register --watch-extensions js \"**/*.test.js\"",
Это позволит найти все файлы, заканчивающиеся .test.js
, в корне каталога вашего проекта на многих уровнях.
Совет: Я предполагаю, что ваша папка app
существует в корне вашего проекта, на том же уровне, что и ваши директории package.json
и node_modules
.Если это сценарий, то шаблон glob **/*.test.js
потенциально найдет любые файлы, заканчивающиеся на .test.js
из каталога node_modules
, что также приведет к запуску этих тестов.Чтобы предотвратить это, вы можете отменить каталог node_modules
в шаблоне глобуса, как показано ниже:
"test": "mocha --require babel-core/register --watch-extensions js \"{,!(node_modules)/**/}*.test.js\""
РЕДАКТИРОВАТЬ:
В ответ наследующий комментарий:
... откуда взята {,!(node_modules)/**/}*.test.js
часть команды?Какой это синтаксис?
Мокко использует node-glob в качестве одной из зависимостей .Синтаксис для этой части команды определяется node-glob (... который аналогичен синтаксису, который Bash использует для расширения globbing / pathname).
Ссылку на этот синтаксис можно найти в Glob Primer раздел документации по node-glob.
Объяснение конкретного шаблона, используемого для этого сценария:
Давайте разберем соответствующие части этого шаблона...
(A) Braced section
│
┌─────────┴──────────┐
{,!(node_modules)/**/}*.test.js
│└──────┬──────┘└─┬┘ │└───┬───┘
│ │ │ │ │
│ │ │ │ (F) filename extension
│ │ │ │
│ │ │ (E) Single Globstar
│ │ │
│ │ (D) Double Globstar
│ │
│ (C) Negation section
│
(B) Comma-delimited
(A) Раздел в скобках: Документы описывают это как:
Перед разбором части путиузоры, скрепленные разделы раскладываются в набор.Разделы в скобках начинаются с {
и заканчиваются }
, с любым количеством разделенных запятыми разделов внутри.Разделы в скобках могут содержать символы косой черты, поэтому a{/b/c,bcd}
расширится до a/b/c
и abcd
.
(B), разделенных запятыми
Секция в скобках начинается с разделителя запятой, потому что следующая секция Negation (часть, начинающаяся с !
), должна следовать за другим шаблоном - это можетне быть в начале.Здесь начальный шаблон перед запятыми не был предоставлен;в этом сценарии это просто подразумевает каталог проекта (или, точнее, тот же / текущий каталог, где хранится package.json
).На самом деле мы могли бы изменить шаблон на любой из следующих, и мы получили бы те же результаты.
{/,!(node_modules)/**/}*.test.js
^
{./,!(node_modules)/**/}*.test.js
^^
Обратите внимание, либо /
, либо ./
были добавлены в шаблон соответственно перед запятой-разделителем.Это так же, как мы можем определять пути к ресурсам в html, javascript и т. Д.
(C) Отрицательная секция
!
означает «не соответствует этому» или «игнорировать это» .Документы описывают это как:
!(pattern|pattern|pattern)
Соответствует всему, что не соответствует ни одному из предоставленных шаблонов.
В нашем сценарии используется игнорирование node_modules
папка.
(D) Двойной глобстар
Часть /**/
соответствует любому количеству символов, включая /
.Возможно, более просто это означает, что нужно сканировать все файлы и подпапки, независимо от уровня.
(E) Один Globstar
Соответствует всем всемсимволы имени файла, если / когда они заканчиваются указанным расширением имени файла (F).
(F) расширение имени файла
Соответствовать всем файламзаканчивающийся расширением имени файла .test.js
.