Подтвердить что ты не робот

Создание приложения на Heroku с Django и NPM

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

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

4b9b3361

Ответ 1

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


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

Теперь я использую coffeescript и less-css с django-compressor on heroku:)

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

Изменить. Чтобы перейти к моему восстановлению из стандартного buildpack:

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

    heroku config:add BUILDPACK_URL=git://github.com/jiaaro/heroku-buildpack-django.git 
    

Ответ 2

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

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

  • Выполнить heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
  • Создайте файл .buildpacks в корневом каталоге вашего репозитория двумя строками: https://github.com/heroku/heroku-buildpack-nodejs.git
    https://github.com/heroku/heroku-buildpack-python.git
  • Создайте файл package.json с вашими зависимостями npm.
  • Запустить npm install

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

Решение @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.
Работал как шарм.:)

Ответ 6

Вещи изменились на земле Героку

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

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

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

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