在Heroku上使用Grunt获取Django应用程序的静态文件

时间:2013-10-28 18:55:54

标签: django heroku gruntjs

当我们将Django应用程序部署到Heroku时,我们想使用我们熟悉的GruntJS(http://gruntjs.com/)来缩小JS并将LESS编译为CSS(以及其他内容)。有没有人想出这样做的聪明人吗?

在看了几个小时后,我找不到任何东西。

2 个答案:

答案 0 :(得分:2)

尝试将django_compressorCOMPRESS_PRECOMPILERS设置一起使用。

COMPRESS_PRECOMPILERS = (
    ('text/less', 'lessc {infile} {outfile}'),
)

模板:

{% compress css %}
<link type="text/less" rel="stylesheet" href="/static/css/styles.less" charset="utf-8">
<style type="text/less">
@color: #4D926F;

#header {
  color: @color;
}
</style>
{% endcompress %}

答案 1 :(得分:1)

django-grunt项目看起来很有希望。我自己还没有尝试过 - 乍一看它似乎并不支持你在Yeoman webapp中获得的更快速开发的良好的grunt开发监视服务器工作流程(至少它没有在他们的文档中记录)自述)。

对于我目前的开源项目,我创建了一种我仍在迭代的hacky解决方案,但它确实有效:

  • 我将我的静态文件和基本模板保存为its own GitHub repo中的常规Yeoman-scaffolded Grunt项目,使用buildcontrol将构建的文件导出到Heroku部署的单独分支中
  • Django应用程序是normally laid out Django appsome script magic将前端代码的开发或生产版本链接到我的静态文件夹中(我可以保持grunt服务器运行以快速迭代前端代码)
  • 要部署到Heroku,我使用minimally-modified python buildpack获取前端仓库的生产分支,并使用上述脚本将其链接起来(我尝试在Heroku上使用grunt构建它,但需要很长时间才能获取所有内容每次都是npm依赖项,所以我发现buildcontrol更有效率了)

更新:我正在迭代使this project中的所有内容都在单个仓库中运行。