whitenoise djangowhitenoise deploy app django heroku coffeescript npm

djangowhitenoise - launch django app heroku



Creando una aplicaciĆ³n en Heroku con Django y NPM (6)

Estoy escribiendo una aplicación Django que incluye algunos CoffeeScript. Para permitir esto, estoy usando django-compressor que compila CoffeeScript a JS antes de que se inicie la aplicación. django-compressor requiere que NPM esté instalado en la máquina para compilar CoffeeScript.

Ahora quiero implementar esta aplicación en Heroku. No puedo poner npm en mis requirements.txt así que me pregunto cómo puedo obtener npm en el servidor de Heroku.


Encontré esta pregunta en Google mientras resolvía el mismo problema para mí. Combiné dos buildpacks oficiales (python y nodejs), por lo que ahora uno puede tener el proyecto Django con el archivo estándar npm-description package.json ejecutando este comando:

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

Esta solución difiere de la de Jiaaro en lo siguiente:

  • se basa en las versiones más recientes (dec 12) de buildpacks (por ejemplo, se ejecuta colectoestáticamente en la implementación)
  • necesita el archivo package.json correcto (al menos el nombre y la versión de su producto deben especificarse en este archivo)
  • Las dependencias de npm se deben enumerar en package.json

La solución de @Jiaaro no funcionó para mí ... Causa un extraño error ... /:

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

Estaba demasiado cansado para lidiar con eso, así que miré a mi alrededor y encontré este recurso ingenioso:
- El libro de cocina heroku-django

Explican cómo puede agregar sus propios scripts que se enganchan en los buildpacks predeterminados de heroku.
Trabajado como un encanto. :)



Si quiere evitar mantener un buildpack personalizado, puede usar el buildpack múltiple .

Usar el multi buildpack es súper simple:

  1. Ejecute la heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
  2. Cree un archivo .buildpacks en la raíz de su repositorio con dos líneas: https://github.com/heroku/heroku-buildpack-nodejs.git
    https://github.com/heroku/heroku-buildpack-python.git
  3. Cree un archivo package.json con sus dependencias npm.
  4. Ejecute la npm install

Las cosas han cambiado en la tierra Heroku

No hay necesidad de paquetes de compilación múltiple, archivos .builpack o paquetes de compilación personalizados. Simplemente agrega los paquetes de construcción heroku oficiales requeridos a tu aplicación heroku y se ejecutarán en el orden ingresado. Use la opción de índice para reordenarlos según sea necesario.

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

Tampoco se necesitan tareas de gunt, aplicaciones como django-bower u otras herramientas especializadas que utilicen los recursos del servidor y ralenticen el tiempo de compilación.

Puedes ver mi tutorial sobre cómo integrar perfectamente Django + Bower + Heroku here .


Nota : El buildpack múltiple es una forma mucho más agradable de lograr esto en estos días :)

He creado una bifurcación del buildpack oficial de Python heroku que permite un npm_requirements.txt opcional para instalar tales dependencias.

Ahora estoy usando coffeescript y less-css con django-compressor en heroku :)

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

Editar : para cambiar a mi buildback desde el buildpack estándar:

  1. utiliza la aplicación de línea de comando heroku para establecer la variable de entorno BUILDPACK_URL :

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