如何部署使用咕噜到Heroku的节点应用(How to deploy node app that u

2019-06-21 19:15发布

我使用的呻吟,也咕噜像插件grunt-contrib-copygrunt-contrib-mincss (即列为NPM依赖我的应用程序)。

此外,我不承诺npm_modules文件夹和public文件夹,其中所有生成的文件。 我无法弄清楚如何构建我的应用程序(我有grunt build部署和设置我的服务器后,命令)(它已经在寻找public文件夹)。

我看到一些东西像grunt-heroku-deploy ,但似乎我是一个坏主意上传之前提交。 也许有一些温和的决定......有什么想法?

Answer 1:

故宫有一个支持postinstall步骤(以及许多其他),这可能是你要找的。

Node.js的Heroku的buildpack当你推到Heroku的解决建立依赖关系运行此命令:

$ npm install --production

https://devcenter.heroku.com/articles/nodejs-support#build-behavior

如果你看一看故宫的文档,你可以设置一系列的脚本来之前或之后任何人运行运行npm install你的包。 它的配置在scripts的财产package.json 。 该scripts属性允许运行自定义脚本(包括grunt )当某些事情在一个包的生命周期发生。

例如,为了呼应一些文本和运行grunt命令,只要任何人(包括Heroku的)运行npm install ,添加到您package.json

{
  ...
  "scripts": {
    "postinstall": "echo postinstall time; ./node_modules/grunt-cli/bin/grunt <your task name>"
  },
  ...
}

https://npmjs.org/doc/scripts.html

重要的注意事项:

  • 您可能需要将路径更改为二进制咕噜在postinstall脚本,检查错误输出如果grunt命令不执行。
  • gruntgrunt-cli必须被列为dependency于你package.json所以它得到由Heroku的安装。 清单下他们devDependencies是不够的,因为Heroku上不会安装这些。 另外,还要注意的Heroku不会安装它作为一个全球性的包,以便执行其在Heroku上你将不得不使用相对路径(因为它上面的配置)。

如果这不起作用(你可能会需要使用相对路径拨弄了一下),那么你可能要考虑编写自己的自定义buildpack对Heroku的 。

更新

随着0.4的grunt包不再包含grunt二进制,也就是现在的一部分grunt-cli包。 答案已更新,以反映这一点。



Answer 2:

这看起来就像当Heroku的Platorm API将在很大程度上得到解决slugrelease功能,使之成为主线。 在这一点上,你可以在本地建立你的代码(或CI服务器上),包了起来,它通过一个API呼叫发送到Heroku的,并从那里释放。

这是仍处于测试期,并仅于2013年12月19日公布。

https://devcenter.heroku.com/articles/platform-api-deploying-slugs

我从来没有跟多少人似乎确定与生成的代码检查到的git或NPM安装后钩超开心。 :(

另外从哲学的立场,释放过程中做一个构建简直是另一个潜在的故障点。


只是为了好玩 :因为这还没有最终确定, 这里有一个bash脚本我扔在一起,您可以使用暂且建立你的代码上部署分支,提交它,它部署到Heroku的,然后删除部署分支。 (我真的不是bash的部署脚本的粉丝,所以我真的很期待这个平台API添加)

#!/bin/bash
set -e 

# Delete current deploy branch
git branch -D deploy
# Create new deploy branch based on master
git checkout -b deploy
# Grunt comands to build our site
grunt build:production
# the dist/ directory is in my .gitignore, so forcibly add it
git add -f dist/
git commit -m "Deploying to Heroku"
# Push it up to heroku, the -f ensures that heroku won't complain
git push heroku -f deploy:master
# Switch it back to master
git checkout master


Answer 3:

咕噜(等人)是一个构建工具,而不是(真的),你应该打包起来,对生产运行的东西。 一种不同的方法将只有内置的文件推送到Heroku的前使用步兵在当地准备(或更好的CI服务器上)项目。 前面已经提到的Heroku会做一个npm install在你的应用程序的推后,这应该是足够的依靠自己的力量终于准备您的应用程序。

我有它设置,使繁重的导出/内置的Heroku应用程序完全生活在一个单独的Git回购我的主要应用程序的源代码回购。 所以,当我做了grunt deploy它优化和相关文件复制到Heroku的回购,收拾起来( git add -A等),然后git push heroku master (或其他)。

这似乎是关注清晰分离,如果你的Live服务器只运行一个预建的应用程序包负责。

当然情况因人而异,高于公认的答案是完全有效的太...尤其是在像Heroku的一个很好的理解和稳定的生活环境。



Answer 4:

Heroku的buildpack为我工作得很好。 好东西。



Answer 5:

为了得到这个工作与咕噜4.0我按照说明这里https://discussion.heroku.com/t/grunt-on-heroku/98/2 。 我不得不做出的唯一改变是删除路径咕噜为使用unix风格的斜杠将使其在Windows失败,反之亦然。 幸运的是,你甚至不需要指定为NPM将寻找咕噜在node_modules / .bin文件夹的路径https://npmjs.org/doc/scripts.html#path 。

  1. 请确保您有两个咕噜咕噜,CLI,即使咕噜会告诉你在全球范围内安装CLI您的package.json本地安装:$: npm i -S grunt grunt-cli

  2. 添加安装后步骤,您的package.json,看起来像这样: "postinstall": "grunt prod"



Answer 6:

看看这个教程: https://medium.com/p/c227cb1ddc56 。 它说明了如何部署在Heroku咕噜应用程序使用自定义buildpack。



Answer 7:

故宫安装后一步可能是你最好的选择,因为你可以从那里调用的呼噜声。 但你也应该看看自定义buildpack,如Heroku的-buildpack-的NodeJS,呼噜声 。



Answer 8:

这篇文章是Rails的具体,但我不明白为什么你不能与任何后端框架,使用它,只是换用任何你正在使用Ruby buildpack。

该解决方案基本上是使用多buildpacks,并具有节点/咕噜buildpack运行grunt build适合你在Heroku。

显著,这个解决方案没有您检查构建工件版本控制。 (好极了!!!)

http://www.angularonrails.com/deploy-angular-rails-single-page-application-heroku/



文章来源: How to deploy node app that uses grunt to heroku