在Heroku上使用Grunt而不玷污devDependencies

时间:2015-02-05 06:15:02

标签: node.js git heroku sass gruntjs

我理解,一般来说,最常用的方法是在Heroku上使用Grunt - 加载buildpack,指定你的grunt heroku任务,并包含你想在Heroku dyno上使用的任何Grunt插件你的package.json:dependencies.

然而,我发现这是一个相当糟糕的解决方案,因为它误解了我的应用程序。我的Grunt插件更像是devDependencies,因为我只会使用Grunt运行一次(每次部署)。我的应用程序并不直接依赖它们来运行,因为它主要是缩小和模板编译。

我还试图将编译后的文件(例如我在Sass和Handlebars中编写的.css.html文件)保留在源代码管理之外,因此将它们从Github是可能的,但绝对不是我想要的。

有没有办法完成以下所有操作?

  • 从Git
  • 中排除.css.html个文件
  • 使用Sass和Handlebars编写样式表和标记
  • 将包含这些文件的基本Express应用程序推送到Heroku
  • 让Heroku运行我的grunt build任务的服务器相对版本(在必要时将其命名为正常)以在启动web:进程之前编译和准备所有视图和资产
  • 让Heroku的Grunt任务明智地理解我只想要一些预启动编译,这样它会查看devDependencies并以一种可能是暂时的方式安装相关的
  • 通过web:进程
  • 启动Express服务器

我必须编写自己的构建包,或者需要做什么才能做到这一点(我认为是)正确的方法。

1 个答案:

答案 0 :(得分:0)

我创建了支持grunt,compass / sass的buildpack heroku-buildpack-webapp-client并安装了devDependencies。也许你可以使用这个或者查看bin/compile script以了解它是如何工作的。