为非节点Web角色设置节点版本

时间:2013-06-16 09:24:19

标签: node.js azure deployment gruntjs

我写了一个SPA,它使用Grunt任务从源代码构建到dist目录。

我想在azure上托管这个,以便将所有内容保存在一个PaaS中。

如果我将预先构建的dist文件夹发送到azure并添加.deploments任务以将其移动到DEPLOYMENT_TARGET文件夹中,一切正常。但是我想在GitHub中保留源代码,并使用现有的Grunt任务在部署时构建应用程序。

我已使用以下命令添加了.deployment文件

[config]
command = npm install

成功触发我的npm安装,然后是安装后脚本

"scripts": {
    "postinstall": "node node_modules/grunt-cli/bin/grunt build"
},

将使用grunt-cli的本地副本(我不喜欢这个,但它有效),但是我得到一个错误,因为正在使用的节点版本是0.6.20而Grunt需要大于0.8

我在package.json

中设置了我的引擎参数
"engines": {
    "node": ">= 0.8.4"
},

但没有运气:(

我感觉忽略了引擎参数,因为找不到node应用程序。这是正确的,因为我希望azure在不使用节点http服务器的情况下为我提供文件。

有没有办法定位另一个Node二进制文件,或者为我的网站专门设置节点版本,即使它不是“使用”节点,也不是这样吗?

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

使用将grunt-cli的本地副本推送到Azure网站的示例,我能够在构建之后和部署之前使用azure来运行grunt。我正在使用带有后期构建事件的.net,但这并不重要,因为整个问题是azure是否会运行grunt。我有

grunt version 0.4.1 

grunt-cli version 0.1.9 

使用我的应用程序进行部署并且正在调用

npm install
my/path/to/grunt-cli/grunt

根据http://www.windowsazure.com/en-us/develop/nodejs/common-tasks/specifying-a-node-version/,当前安装的节点的默认版本是0.6.20,但这种方法对我来说仍然有用。