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

teh*_*tro 6 azure web-deployment ember.js ember-cli

我正在尝试将一个ember-cli应用程序部署到Azure网站.部署到azure时,运行部署脚本,执行以下操作:

 - npm install bower
 - npm install ember-cli
 - bower install
 - npm install
 - ember build
Run Code Online (Sandbox Code Playgroud)

好吧,这一切似乎进展顺利,直到它完成了这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
Run Code Online (Sandbox Code Playgroud)

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

我正在尝试在Web服务器上进行构建过程,并且这在Azure上不起作用.有没有人有Azure的经验?非常感谢!

UPDATE

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

小智 6

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

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


Jus*_*ner 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'])
}
Run Code Online (Sandbox Code Playgroud)

之后,我有一个dist文件夹,可以通过 Kudu Sync 命令将其复制到wwwroot. 如果您还有其他需要查看的内容,请告诉我,我会更新我的答案。

更新

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

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