Вот уборщик версия
магазин это как startMongoIfNotRunning.sh
в том же месте, как Gruntfile:
# this script checks if the mongod is running, starts it if not
if pgrep -q mongod; then
echo running;
else
mongod;
fi
exit 0;
И в вашем Gruntfile:
shell: {
mongo: {
command: "sh startMongoIfNotRunning.sh",
options: {
async: true
}
},
}
Edit - оригинальная версия ниже
Ok - Я думаю, что это работает правильно ...
создать скрипт, который начнет mongod, если он не работает ... сохранить его где-то, вероятно, в вашем проекте. Я назвал его startMongoIfNotRunning.sh:
# this script checks if the mongod is running, starts it if not
`ps -A | grep -q '[m]ongod'`
if [ "$?" -eq "0" ]; then
echo "running"
else
mongod
fi
Вы, возможно, придется сделать его исполняемым: chmod +x path/to/script/startMongoIfNotRunning.sh
Установка черновую-оболочки отродье: npm install grunt-shell-spawn --save-dev
Затем в Gruntfile добавить это:
shell: {
mongo: {
command: "exec path/to/script/startMongoIfNotRunning.sh",
options: {
async: true
}
},
}
(Если вы используете yoman, использование <%= yeoman.app %>
не работает, потому что эти пути относятся ко всему проекту, поэтому yo u получите что-то вроде «app», а не весь путь к скрипту. Я уверен, что вы можете заставить его работать, я просто не знаю, как получить путь)
Если вы только что выполнили задачу grunt shell:mongo
mongod запустится, но я не смог ее закрыть, используя grunt shell:mongo:kill
. Однако, предполагая, что вы используете блокирующую задачу позже (я использую watch
), тогда она должна автоматически быть убита, когда вы закончите эту задачу.
Надеюсь, это поможет кому-то!
http://stackoverflow.com/a/18275415/1085699 В качестве хорошего решения для скрипта. –
Я не очень свободно владею оболочкой - могу ли я просто положить все это на одну строку, и она запустится? –
Нет, вам нужно будет сделать это сценарий, а затем называть его от ворчания. Это может помочь: http://stackoverflow.com/questions/18368575/execute-shell-script-in-gruntfile-and-assign-result-to-variable –