Создание приложения на Heroku с Django и NPM
Я пишу приложение Django, которое включает в себя некоторый CoffeeScript. Для этого я использую django-compressor, который компилирует CoffeeScript в JS до запуска приложения. django-compressor требует, чтобы NPM был установлен на машине для компиляции CoffeeScript.
Теперь я хочу развернуть это приложение на Heroku. Я не могу поместить npm в мой requirements.txt
, поэтому мне интересно, как я могу получить npm на сервере Heroku?
Ответы
Ответ 1
Примечание. multi buildpack - это гораздо лучший способ сделать это в наши дни:)
Я создал вилку официального Python heroku buildpack, которая позволяет опционально npm_requirements.txt
устанавливать такие зависимости.
Теперь я использую coffeescript и less-css с django-compressor on heroku:)
https://github.com/jiaaro/heroku-buildpack-django
Изменить. Чтобы перейти к моему восстановлению из стандартного buildpack:
Ответ 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 здесь.