我正在编写一个包含一些CoffeeScript的Django应用程序。为了实现这个目的,我使用了django-compressor,它在应用程序启动之前将CoffeeScript编译为JS。 django-compressor要求在机器上安装NPM来编译CoffeeScript。
现在我想在Heroku上部署这个应用程序。我不能把npm放在requirements.txt
中,所以我想知道如何在Heroku服务器上获取npm?
答案 0 :(得分:33)
如果您想避免维护自定义构建包,可以使用multi buildpack。
使用multi buildpack非常简单:
heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
https://github.com/heroku/heroku-buildpack-nodejs.git
https://github.com/heroku/heroku-buildpack-python.git
npm install
答案 1 :(得分:19)
注意:multi buildpack是目前实现这一目标的更好方法:)
我已经创建了官方Python heroku buildpack的一个分支,它允许一个可选的npm_requirements.txt
来安装这样的依赖项。
我现在在heroku上使用coffeescript和less-css与django-compressor:)
https://github.com/jiaaro/heroku-buildpack-django
编辑:从标准buildpack切换到我的buildback:
使用heroku
命令行应用设置BUILDPACK_URL
环境变量:
heroku config:add BUILDPACK_URL=git://github.com/jiaaro/heroku-buildpack-django.git
答案 2 :(得分:3)
您可以创建自己的buildpack,混合nodejs buildbpack和python buildpack。或者在您的机器上编译CoffeeScript并将其放在S3上。
答案 3 :(得分:3)
我在Google中发现了这个问题,同时为自己解决了同样的问题。
我合并了两个官方构建包(python和nodejs),所以现在可以通过运行此命令来使用标准npm-description文件package.json
的Django项目:
heroku config:add BUILDPACK_URL=https://github.com/podshumok/heroku-buildpack-python
此解决方案与Jiaaro的解决方案不同:
package.json
文件(至少应在此文件中指定产品的名称和版本)package.json
答案 4 :(得分:3)
File "almalinks/manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
太累了无法处理它,所以我环顾四周,找到了这个漂亮的资源:
- The heroku-django cookbook
他们解释了如何添加自己的脚本,这些脚本挂钩到heroku的默认构建包中 工作就像一个魅力。 :)
答案 5 :(得分:1)
Heroku土地上的情况发生了变化
不需要多个构建包,.builpack文件或自定义构建包。只需将所需的官方heroku构建包添加到您的heroku应用程序中,它们将按输入的顺序执行。使用index选项根据需要对它们重新排序。
heroku buildpacks:add --index 1 heroku/nodejs -a your_app_name
也不需要gunt任务,像django-bower这样的应用程序,或其他需要占用服务器资源并缩短构建时间的专用工具。
您可以查看我的教程,了解如何无缝集成Django + Bower + Heroku here。