Создание приложения на Heroku с Django и NPM - PullRequest
23 голосов
/ 21 февраля 2012

Я пишу приложение Django, которое включает в себя немного CoffeeScript.Для этого я использую django-компрессор, который компилирует CoffeeScript в JS до запуска приложения.Для компиляции CoffeeScript django-compress требует, чтобы на компьютере был установлен NPM.

Теперь я хочу развернуть это приложение на Heroku.Я не могу положить npm в свой requirements.txt, поэтому мне интересно, как я могу получить npm на сервере Heroku?

Ответы [ 6 ]

33 голосов
/ 03 мая 2013

Если вы не хотите поддерживать собственный сборочный пакет, вы можете использовать multi buildpack .

Использование multi buildpack очень просто:

  1. Выполнить heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
  2. Создайте файл .buildpacks в корне вашего хранилища в две строки: https://github.com/heroku/heroku-buildpack-nodejs.git
    https://github.com/heroku/heroku-buildpack-python.git
  3. Создайте файл package.json с зависимостями npm.
  4. Пробег npm install
19 голосов
/ 19 марта 2012

Примечание : multi buildpack - гораздо более приятный способ сделать это в наши дни:)


Я создал форк официального пакета сборки Python heroku, который позволяет опционально npm_requirements.txt для установки таких зависимостей.

Я сейчас использую coffeescript и less-css с django-компрессором на heroku:)

https://github.com/jiaaro/heroku-buildpack-django

Редактировать : Чтобы переключиться на мою сборку из стандартного пакета сборки:

  1. используйте приложение командной строки heroku для установки переменной среды BUILDPACK_URL:

    heroku config:add BUILDPACK_URL=git://github.com/jiaaro/heroku-buildpack-django.git 
    
3 голосов
/ 19 апреля 2013

@ Решение Jiaaro не сработало для меня ... Вызывает странную ошибку ... /:

File "almalinks/manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

Слишком устал, чтобы с этим справиться, поэтому я оглянулся и обнаружил,Этот отличный ресурс:
- Поваренная книга heroku-django

Они объясняют, как вы можете добавить свои собственные скрипты, которые подключаются к стандартным пакетам сборки heroku.
Работает как шарм.:)

3 голосов
/ 20 декабря 2012

Я нашел этот вопрос в Google, решая ту же проблему для себя. Я объединил два официальных пакета сборки (python и nodejs), поэтому теперь можно создать проект Django со стандартным файлом описания npm package.json, выполнив следующую команду:

heroku config:add BUILDPACK_URL=https://github.com/podshumok/heroku-buildpack-python

Это решение отличается от решения Jiaaro в следующем:

  • он основан на более новых (12 декабря) версиях buildpack-пакетов (например, он запускает collectstatic при развертывании)
  • вам нужен правильный package.json файл (по крайней мере, имя и версия вашего продукта должны быть указаны в этом файле)
  • зависимости npm должны быть перечислены в package.json
3 голосов
/ 12 марта 2012

Вы можете создать свой собственный buildpack , который будет смешивать nodejs buildbpack и python buildpack . Или скомпилируйте ваш CoffeeScript на своем компьютере и поместите его на S3.

1 голос
/ 06 октября 2016

Ситуация изменилась в Heroku land

Нет необходимости в нескольких сборочных пакетах, файлах .builpack или пользовательских сборочных пакетах.Просто добавьте необходимые официальные пакеты сборки heroku в ваше приложение heroku, и они будут выполнены в указанном порядке.Используйте опцию index, чтобы переупорядочить их по мере необходимости.

heroku buildpacks:add --index 1 heroku/nodejs -a your_app_name

Также нет необходимости выполнять задачи, такие как django-bower, или другие специализированные инструменты, которые занимают ресурсы сервера и замедляют время сборки.

Вы можете проверить мой учебник о том, как легко интегрировать Django + Bower + Heroku здесь .

...