如何将Ember CLI应用程序部署到Azure网站

时间:2015-02-13 06:15:57

标签: azure ember.js web-deployment ember-cli

我试图将ember-cli应用程序部署到Azure网站。   部署到azure时,运行部署脚本,执行以下操作:

 - npm install bower
 - npm install ember-cli
 - bower install
 - npm install
 - ember build

嗯,这一切似乎进展顺利,直到它达到ember build步骤。我收到一个错误:

this._handle.open(options.fd)

Error: EINVAL, Invalid argument
      at new Socket (net.js:156:18)
      at process.stdin (node.js:664:19)
      at ..... ember-cli\bin\ember:28:25

搜索我发现此链接与Grunt https://github.com/TryGhost/Ghost/pull/3608存在同样的问题 那么,我如何在Ember CLI中禁用stdin?我可以采取任何方式,或任何解决方法,以便我可以部署应用程序?

我正在尝试在网络服务器上制作构建过程,并且不知道这对Azure不起作用。有没有人有Azure的经验?   非常感谢你!

更新

请下面由Felix Rieseberg或Justin Niessner发布的两种方法之一。谢谢你们的支持和调查!

2 个答案:

答案 0 :(得分:6)

我实际上也找到了一种方法 - 由于我是微软的开源人员,我只是构建了一个小型的npm模块来处理所有事情。如果你想要一个很长的解释,check this out - 如果你只想要tl; dr版本:

$ npm install ember-cli-azure-deploy --save-dev -g $ azure-deploy init

答案 1 :(得分:4)

我正在尝试自己的最后步骤。我不确定您是如何设置部署的,但我希望我在dist文件夹中构建%DEPLOYMENT_SOURCE%文件夹,然后仅将部署文件作为部署的一部分进行复制。

在看到你发布的链接之前,我一直在努力解决你遇到的同样问题。这让我有了一个疯狂的想法,即使用gruntgrunt-shell来调用ember build而不是直接从我的deploy.cmd调用它。

我的Gruntfile.js非常简单:

module.exports = function(grunt) {
  require('load-grunt-tasks')(grunt);

  grunt.initConfig({
    shell: {
      build: {
        command: 'ember build -prod',
        options: {
          stdout: true,
          stdin: false
        }
      },
      test: {
        command: 'ember test',
        options: {
          stdout: true,
          stdin: false
        }
      }
    }
  });

  grunt.registerTask('default', ['shell:build'])
}

之后,我有一个dist文件夹,然后可以通过Kudu Sync命令复制到wwwroot。如果你需要看到其他任何东西,请告诉我,我会更新我的答案。

<强>更新

我终于有机会清理并添加一些检查以确保我没有安装已安装的东西。您可以在以下位置查看我的整个deploy.sh文件:

https://github.com/CrshOverride/EmberTodo/blob/master/deploy.sh