Grunt无法在Azure网站上运行
我正在尝试使用Azure的Git部署来构build和打包项目。
我创build了以下文件
.deployment
-
deploy.cmd
-
Gruntfile.js
-
package.json
我的.deployment
文件调用了deploy.cmd
。 deploy.cmd
通过将path设置为包含Node.js和npm的检查副本来设置环境。 我可以打电话给npm install
就好了。 当我调用grunt
,它似乎执行到第一个标准输出消息,然后返回并设置错误返回码。 除此之外,我没有收到任何其他消息。 其他命令似乎运行得很好。
我试过把STDERR弄出来,没有运气。 我尝试在远程执行控制台下运行,没有运气。 我的Gruntfile.js
本地运行就好了。
有没有我失踪的魔法酱?
这有点旧,但我会回答,以防万一有人遇到这个问题。
首先,禁用颜色运行grunt是有帮助的,因为诊断控制台和部署日志都与ANSI代码相矛盾。 为此,运行grunt --no-color
。 这应该将STDOUT信息回到控制台并进入部署日志。
其次,我不推荐使用已签入的Node或NPM版本。 Windows Azure已经将这些内置到环境中,并且已经configuration了两个都需要执行的特殊临时path和cachingpath。
Project Kudu是为Azure Deployments提供动力的部署引擎,但您已经知道这一点,因为您有一个.deployment文件。 但是,Azure命令行工具[ npm install azure-cli --global
]将帮助您npm install azure-cli --global
一些更好的部署脚本,这些脚本将使用Azure的预安装节点和NPM设置。
azure site deploymentscript –-node
会得到你的基节点脚本。
从那里, deploy.sh
需要做一些修改,以便可靠地执行Grunt。 在deploy.sh
是#Deployment部分。 将其内容replace为以下内容:
# 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
。 (注意:用你需要运行的任何Grunt任务replace“clean common dist”。)
还有一些其他问题可能会涉及到。 我在个人博客上写了一篇文章 ,其中包括您可能遇到的一些问题。