Измените свои сценарии так, чтобы то, что вы передали в Mocha, было защищено от расширения оболочкой:
"scripts": {
"test": "mocha 'dist/**/*Test.js'",
}
Обратите внимание на одинарные кавычки вокруг параметра, указанного в mocha
.
Эта проблема исправлена без использования внешних инструментов. Основной причиной вашей проблемы является то, что в npm
используется sh
как оболочка, которая будет запускать ваши команды сценария.
В подавляющем большинстве случаев, когда процесс * nix запускает оболочку, он запустит sh
, если только что-то не говорит об этом иначе. Предпочтение оболочки, которое вы устанавливаете для входа в систему, не является способом «сказать об этом иначе». Поэтому, если у вас есть, скажем, zsh
в качестве вашей оболочки входа, это не означает, что npm
будет использовать zsh
.
Те реализации sh
, которые не содержат никаких расширений, кроме того, что sh
должен предоставить, не понимайте **
glob так, как вы этого хотите. Насколько я могу судить, это интерпретируется как *
. Тем не менее, Mocha интерпретирует пути, переданные ему, используя реализацию JavaScript globs. Таким образом, вы можете обойти проблему, защищая ваши глобы от интерпретации sh
. Рассмотрим следующий package.json
:
{
"name": "immutable-ts",
"scripts": {
"bad": "mocha test/**/*a.js",
"good": "mocha 'test/**/*a.js'",
"shell": "echo $0"
}
}
Скрипт shell
- это просто, чтобы мы могли проверить, в какой оболочке работает скрипт. Если вы запустите его, вы увидите sh
.
Теперь, учитывая следующее дерево:
test/
├── a.js
├── b.js
├── x
│ ├── a
│ │ ├── a.js
│ │ └── b.js
│ ├── a.js
│ └── b
│ └── a.js
└── y
├── a.js
└── q
При всех файлах a.js
и b.js
, содержащих it(__filename);
, Вы получаете следующие результаты:
$ npm run bad
> immutable-ts@ bad /tmp/t2
> mocha test/**/*a.js
- /tmp/t2/test/x/a.js
- /tmp/t2/test/y/a.js
0 passing (6ms)
2 pending
$ npm run good
> immutable-ts@ good /tmp/t2
> mocha 'test/**/*a.js'
- /tmp/t2/test/a.js
- /tmp/t2/test/x/a.js
- /tmp/t2/test/x/a/a.js
- /tmp/t2/test/x/b/a.js
- /tmp/t2/test/y/a.js
0 passing (5ms)
5 pending
От их страница справки :
Для "удаления" MAMP только необходимо удалить каталог MAMP, и все возвращается к исходному состоянию (MAMP ничего не изменяет на "нормальном" OS X).
AppZapper является большим инструментом, который решает эту проблему. Поисковый Google для него, это свободно в первые 5 раз, когда Вы используете его.
Полностью удалять любое приложение. Попытайтесь установить AppTrap. + это свободно
Каждый раз, когда Вы перемещаете приложение в Мусор, AppTrap нашел бы предпочтительные файлы в Вашей библиотеке и позволил бы Вам удалить их также.