【问题标题】:Set node version for non node web role为非节点 Web 角色设置节点版本
【发布时间】:2013-06-16 09:24:19
【问题描述】:

我编写了一个 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 二进制文件或专门为我的网站设置节点版本,即使它没有“使用”节点?

非常感谢任何帮助

【问题讨论】:

  • 您使用的是Web Role(即云服务)还是Azure Web Site(即Azure网站)?
  • @astaykov 我正在使用 Azure 网站。我尝试过很多选择,但我得出的结论是,我需要制作自己的“构建服务器”,据说这似乎是一种过度杀伤

标签: node.js azure deployment gruntjs


【解决方案1】:

使用您将 grunt-cli 的本地副本推送到 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,但这种方法对我仍然有效。

【讨论】:

  • 很高兴您的启动和运行。我应该写回这里。问题是 grunt 的更高版本需要 node > 0.8。我们最终通过构建服务器解决了我们的问题。我对解决方案不是特别满意(感觉有点矫枉过正),但它的工作原理。
  • 以后是指年纪大吗?我正在使用当前最新的稳定版本的 grunt 0.4.1,并且我有一个 azure 网站。很高兴您找到了解决方案,只是想指出它正在运行,因此可能会为您节省一些 $$
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多