我使用的呻吟,也咕噜像插件grunt-contrib-copy
, grunt-contrib-mincss
(即列为NPM依赖我的应用程序)。
此外,我不承诺npm_modules
文件夹和public
文件夹,其中所有生成的文件。 我无法弄清楚如何构建我的应用程序(我有grunt build
部署和设置我的服务器后,命令)(它已经在寻找public
文件夹)。
我看到一些东西像grunt-heroku-deploy
,但似乎我是一个坏主意上传之前提交。 也许有一些温和的决定......有什么想法?
故宫有一个支持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
命令不执行。 -
grunt
和grunt-cli
必须被列为dependency
于你package.json
所以它得到由Heroku的安装。 清单下他们devDependencies
是不够的,因为Heroku上不会安装这些。 另外,还要注意的Heroku不会安装它作为一个全球性的包,以便执行其在Heroku上你将不得不使用相对路径(因为它上面的配置)。
如果这不起作用(你可能会需要使用相对路径拨弄了一下),那么你可能要考虑编写自己的自定义buildpack对Heroku的 。
更新
随着0.4的grunt
包不再包含grunt
二进制,也就是现在的一部分grunt-cli
包。 答案已更新,以反映这一点。
这看起来就像当Heroku的Platorm API将在很大程度上得到解决slug
和release
功能,使之成为主线。 在这一点上,你可以在本地建立你的代码(或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
咕噜(等人)是一个构建工具,而不是(真的),你应该打包起来,对生产运行的东西。 一种不同的方法将只有内置的文件推送到Heroku的前使用步兵在当地准备(或更好的CI服务器上)项目。 前面已经提到的Heroku会做一个npm install
在你的应用程序的推后,这应该是足够的依靠自己的力量终于准备您的应用程序。
我有它设置,使繁重的导出/内置的Heroku应用程序完全生活在一个单独的Git回购我的主要应用程序的源代码回购。 所以,当我做了grunt deploy
它优化和相关文件复制到Heroku的回购,收拾起来( git add -A
等),然后git push heroku master
(或其他)。
这似乎是关注清晰分离,如果你的Live服务器只运行一个预建的应用程序包负责。
当然情况因人而异,高于公认的答案是完全有效的太...尤其是在像Heroku的一个很好的理解和稳定的生活环境。
Heroku的buildpack为我工作得很好。 好东西。
为了得到这个工作与咕噜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 。
请确保您有两个咕噜咕噜,CLI,即使咕噜会告诉你在全球范围内安装CLI您的package.json本地安装:$: npm i -S grunt grunt-cli
添加安装后步骤,您的package.json,看起来像这样: "postinstall": "grunt prod"
看看这个教程: https://medium.com/p/c227cb1ddc56 。 它说明了如何部署在Heroku咕噜应用程序使用自定义buildpack。
故宫安装后一步可能是你最好的选择,因为你可以从那里调用的呼噜声。 但你也应该看看自定义buildpack,如Heroku的-buildpack-的NodeJS,呼噜声 。
这篇文章是Rails的具体,但我不明白为什么你不能与任何后端框架,使用它,只是换用任何你正在使用Ruby buildpack。
该解决方案基本上是使用多buildpacks,并具有节点/咕噜buildpack运行grunt build
适合你在Heroku。
显著,这个解决方案没有您检查构建工件版本控制。 (好极了!!!)
http://www.angularonrails.com/deploy-angular-rails-single-page-application-heroku/