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

How to deploy an Ember CLI app to Azure Websites

我正在尝试将 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

四处搜索,我发现这个 link 与 G运行t https://github.com/TryGhost/Ghost/pull/3608 有同样的问题 那么,如何在 Ember CLI 中禁用标准输入?我有什么方法可以做到这一点,或者有什么解决方法可以部署应用程序吗?

我正在尝试在网络服务器上进行构建过程,但不知何故这在 Azure 上不起作用。有没有人有使用 Azure 的经验? 非常感谢!

更新

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

我正处于自己尝试的最后几步。我不确定你是如何设置部署的,但我希望我的在 %DEPLOYMENT_SOURCE% 文件夹中构建 dist 文件夹,然后只复制生成的文件夹作为部署的一部分。

我一直在努力解决您遇到的同样问题,直到我看到您包含在 post 中的 link。这给了我使用 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

我实际上也想出了一个办法——因为我是微软的一名开源人员,所以我刚刚构建了一个小的 npm 模块来处理所有事情。如果您想要详细解释,check this out - 如果您只想要 tl;dr 版本:

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