Grunt не запускается на веб-сайте Azure
Я пытаюсь собрать и упаковать свой проект с помощью развертывания Git в Azure.
Я создал следующие файлы
.deployment
deploy.cmd
Gruntfile.js
package.json
мой .deployment
файловые вызовы deploy.cmd
, deploy.cmd
устанавливает среду, устанавливая путь для включения проверенной копии Node.js и npm. я могу позвонить npm install
просто хорошо. Когда я звоню grunt
Кажется, он выполняется до первого стандартного сообщения out, затем возвращается и устанавливается код возврата ошибки. Я не получаю никакого другого сообщения, кроме этого. Другие команды работают нормально.
Я пытался вывести из строя STDERR, не повезло. Я попытался запустить под консолью удаленного выполнения, не повезло. мой Gruntfile.js
работает локально просто отлично.
Есть ли какой-то волшебный соус, которого мне не хватает?
1 ответ
Это немного устарело, но я все равно отвечу на всякий случай, если кто-нибудь столкнется с этим вопросом.
Во-первых, полезно запускать grunt с отключенными цветами, поскольку как диагностическая консоль, так и журналы развертывания борются с кодами ANSI. Для этого запустите grunt --no-color
, Это должно вернуть информацию о STDOUT обратно в консоль и в журнал развертывания.
Во-вторых, я не рекомендую использовать зарегистрированные версии Node или NPM. В Windows Azure они уже встроены в среду и уже настроены на специальные временные пути и пути кеша, необходимые для их наилучшего выполнения.
Project Kudu - это механизм развертывания, обеспечивающий развертывание Azure, но вы уже знаете это, поскольку у вас есть файл.deployment. Тем не менее, инструменты командной строки Azure [npm install azure-cli --global
] поможет вам подготовить несколько лучших сценариев развертывания, которые будут использовать предустановленный узел Azure и настройку NPM.
azure site deploymentscript –-node
получит вам сценарий базового узла.
Оттуда, несколько модификаций необходимы для deploy.sh
чтобы заставить его казнить Гранта, надежно. В deploy.sh
это раздел #Deployment. Замените его содержимое следующим:
# Deployment
# ----------
echo Handling node.js grunt deployment.
# 1. Select node version
selectNodeVersion
# 2. Install npm packages
if [ -e "$DEPLOYMENT_SOURCE/package.json" ]; then
eval $NPM_CMD install
exitWithMessageOnError "npm failed"
fi
# 3. Install bower packages
if [ -e "$DEPLOYMENT_SOURCE/bower.json" ]; then
eval $NPM_CMD install bower
exitWithMessageOnError "installing bower failed"
./node_modules/.bin/bower install
exitWithMessageOnError "bower failed"
fi
# 4. Run grunt
if [ -e "$DEPLOYMENT_SOURCE/Gruntfile.js" ]; then
eval $NPM_CMD install grunt-cli
exitWithMessageOnError "installing grunt failed"
./node_modules/.bin/grunt --no-color clean common dist
exitWithMessageOnError "grunt failed"
fi
# 5. KuduSync to Target
"$KUDU_SYNC_CMD" -v 500 -f "$DEPLOYMENT_SOURCE/dist" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.hg;.deployment;deploy.sh"
exitWithMessageOnError "Kudu Sync to Target failed"
Это будет работать npm install
, с последующим bower install
(если bower.json существует), затем grunt clean common dist
(если Gruntfile.js существует) и, наконец, KuduSync в ваш /wwwroot
, (Примечание: замените "clean common dist" на любые задачи Grunt, которые вам нужно выполнить.)
Есть несколько других проблем, с которыми вы можете столкнуться. Я пишу об этом в своем личном блоге, в котором описаны некоторые проблемы, с которыми вы можете столкнуться.