Хех, я чувствую тебя;) Я являюсь частью команды, занятой созданием нового стартапа с использованием узла. Два наших разработчика работают на OSX, один на Linux. Я на Windows.
Я скачал и использую GNU "Make for Windows" и теперь вполне могу сделать наши комплекты установки и тестирования.
Кроме того, я настоятельно рекомендую вам использовать PowerShell - в нем есть набор команд, связанных с командами, удобными для UNIX (например, Get-ChildItem -> ls). Это позволяет нескольким нашим сценариям работать без изменений в UNIX или Windows.
Итак, к вашему вопросу:
Попробуйте заменить ваш make-файл выше следующим:
# Detect if we're running Windows
ifdef SystemRoot
# If so, set the file & folder deletion commands:
FixPath = $(subst /,\,$1)
else
# Otherwise, assume we're running *N*X:
FixPath = $1
endif
NODE_MODULES := ./node_modules/.bin/
test:
$(call FixPath, NODE_MODULES)mocha -u tdd -R spec
.PHONY: test
Примечание: в файлах Makefile задачи внутри целей должны иметь отступы от символов табуляции, а не пробелов! Пойди разберись !!
Я украл процедуру FixPath из этого поста (спасибо, Пол :)). Он заменяет строку / на \, если работает в Windows.
Одна из проблем с make в Windows заключается в том, что он выполняет оболочку для командной оболочки NT (через CreateProcess) для выполнения каждой задачи. Это означает, что любые N X-измы, которые иначе будет обрабатывать Powershell (например, ls, cat и т. Д.), Не будут работать при выполнении make-файлов. Таким образом, рекомендуется заменить встроенные команды на перезаписываемые псевдонимы, которые можно установить для одной команды для NT и другой для N X.
Возможно, я доберусь до разветвления Gnu Make и выясню, смогу ли я заставить его работать в Powershell при выполнении команд вместо командной строки NT. Это также устранит необходимость использования FixPath выше;)
Пинг мне, если вы застряли;)