在Heroku上部署Aurelia应用程序

时间:2018-03-31 14:59:36

标签: node.js heroku build aurelia heroku-cli

我有一个在前端使用带有Aurelia的Node.js的应用程序,我想在Heroku上部署它。

要在本地运行应用程序,我需要执行以下命令:

1. npm start 
2. cd public > gulp watch

安装heroku-cli后,尝试使用git push heroku master发布。

问题是,当Heroku在云上部署应用时,它只运行npm start。所以它能够启动服务器。

但是,它对cd publicgulp watch一无所知。

我的问题是,一旦启动服务器,我如何告诉Heroku将目录更改为public并执行gulp watch命令?

2 个答案:

答案 0 :(得分:1)

编辑:

我忘记了重要的一点。由于你在你的问题中只提到了Aurelia,我(错误地)认为你所拥有的只是。

最终,对于制作应用,您希望拥有一个托管Aurelia应用的合适网络服务器。

示例:

对于我已构建的Aurelia应用程序,我通常会运行3个不同的进程,每个进程都有自己的端口(或主机名):

  • IdentityServer
  • ASP.NET Web Api
  • OWIN FileServer

第三个是将我的Aurelia应用程序作为静态包托管。

这里没有任何相关的东西。服务器甚至没有安装npm,就像任何其他服务器端应用程序一样。这正是我如何部署它的原因;不需要与节点相关的命令。

如果您使用nodejs作为服务器端内容,请使用http-server来提供静态包。

当您在自己的服务器端应用程序中托管aurelia应用程序时,您可以获得额外的好处,即能够直接发送一些引导配置以及捆绑包,因此您不必对网址进行硬编码等。< / p>

我暗示的内容&#34;不要在heroku上托管静态网站&#34;:捆绑它,让你的网络应用程序托管它。我的原始答案仅适用于没有涉及服务器端的内容。

原始答案:

一般不建议在heroku上托管静态网站,请参阅this blog post。底线是Aurelia网站是静态的,静态网站不需要app服务器。它不必要地昂贵,并且没有大多数CDN那样好的分发。

话虽如此,如果你坚持在Heroku上托管一个静态的Aurelia网站,那么你最好的办法是将你所有的脚本调用合并到一个调用中,正如你所说,已经运行了。因此,请将npm start脚本调用gulp watch

您可能希望npm install您的依赖项并致电../node_modules/.bin/gulp watch而不是全局调用gulp。

然而,当谈到Heroku时,gulp watch本身可能不会起作用,因为这将启动一个在Heroku中没有端口绑定的开发服务器。它将会运行,但它无法从外部访问。

gulp watch不是你想要在服务器上运行的东西,因为它会监视文件更改(从那里不会发生)并运行像browserync这样没用的东西。只需捆绑您的应用并开始正常http-server或更好,然后将准备开始的套装上传到正确的文件夹中即可完成。

答案 1 :(得分:0)

您想要构建您的应用程序,然后像部署一个完全编译的静态应用程序一样进行部署。使用Aurelia CLI,它将为au build --env prod,然后将脚本文件夹,index.html和所有依赖项(如CSS,字体等)复制到单独的文件夹中。 gulp build的工作方式相同。

从那里,您将如以下medium.com文章中所示将已编译的应用程序发布到Heroku:

https://medium.com/@winnieliang/how-to-run-a-simple-html-css-javascript-application-on-heroku-4e664c541b0b

下面是文章的主要部分,但这里有一个要点-您正在“诱骗” heroku认为它是一个PHP应用程序。严重!

Head to root directory of the repo that contains index.html which dictates the main HTML page.
Run touch composer.json to create a file called composer.json.
Add the following line: {} inside.
Run touch index.php to create a file called index.php.
Add the line: <?php include_once("index.html"); ?> inside.
Now update the repo on Github if it’s connected to your account or Heroku command git push heroku master . Wait for the automatic deploy to work its magic and tada!

还有一些其他步骤可将已编译的应用程序制作为存储库(即git init),但这应该对您有用。对我有用。