这篇文章有点过时,但我会回答它,以防有人遇到同样的问题。
首先,建议禁用颜色运行grunt,因为诊断控制台和部署日志难以处理ANSI代码。要做到这一点,请运行grunt --no-color
。这应该将STDOUT信息返回到控制台和部署日志中。
其次,我不建议使用已检入的Node或NPM版本。Windows Azure已经将它们构建到环境中,并已配置了特殊的临时路径和缓存路径,以便两者以最佳状态执行。
Project Kudu是驱动Azure部署的部署引擎,但您已经知道这一点,因为您有一个 .deployment 文件。然而,Azure命令行工具[npm install azure-cli --global
]将帮助您创建一些更好的部署脚本,这些脚本将使用Azure预安装的Node和NPM设置。
azure site deploymentscript –-node
我会为您提供基础的节点脚本。
从那里开始,需要对deploy.sh
进行一些修改,以便可靠地执行Grunt。在deploy.sh
中有一个#Deployment部分。请用以下内容替换其内容:
echo Handling node.js grunt deployment.
selectNodeVersion
if [ -e "$DEPLOYMENT_SOURCE/package.json" ]; then
eval $NPM_CMD install
exitWithMessageOnError "npm failed"
fi
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
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
"$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
。(注意:用您需要运行的Grunt任务替换'clean common dist'。)
您可能会遇到其他一些问题。我在
个人博客上的文章中写了这个,并包括了一些您可能会遇到的问题。