Question

J'écris une application Django qui contient du CoffeeScript.Pour permettre cela, j'utilise django-compresseur qui compile le CoffeeScript en JS avant le lancement de l'application.django-compresseur nécessite que NPM soit installé sur la machine pour compiler CoffeeScript.

Je souhaite maintenant déployer cette application sur Heroku.Je ne peux pas mettre npm dans mon requirements.txt donc je me demande comment je peux obtenir npm sur le serveur Heroku?

Était-ce utile?

La solution

Remarque : le multi buildpack est bien plus agréablefaçon d'accomplir cela ces jours-ci :)


J'ai créé un fork du buildpack officiel de Python heroku qui permet à un npm_requirements.txt facultatif d'installer de telles dépendances.

J'utilise maintenant coffeescript et less-css avec django-compresseur sur heroku :)

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

Modifier : pour passer à ma compilation depuis le buildpack standard:

  1. utilisez l'application de ligne de commande heroku pour définir la variable d'environnement BUILDPACK_URL:

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

Autres conseils

Si vous voulez éviter de maintenir un buildpack personnalisé, vous pouvez utiliser le multi buildpack .

Utiliser le multi buildpack est super simple:

  1. Exécutez heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
  2. Créez un fichier .buildpacks à la racine de votre référentiel avec deux lignes: https://github.com/heroku/heroku-buildpack-nodejs.git
    https://github.com/heroku/heroku-buildpack-python.git
  3. Créez un fichier package.json avec vos dépendances npm.
  4. Exécutez npm install

Vous pouvez créer votre propre buildpack , qui mélange nodejs buildbpack et pack de construction python .Ou compilez votre CoffeeScript sur votre machine et mettez-le sur S3.

J'ai trouvé cette question dans Google tout en résolvant le même problème pour moi-même. J'ai fusionné deux buildpacks officiels (python et nodejs), donc maintenant on peut avoir un projet Django avec le fichier standard npm-description package.json en exécutant cette commande:

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

Cette solution diffère de celle de Jiaaro par ce qui suit:

  • il est basé sur les versions les plus récentes (12 décembre) des buildpacks (par exemple, il exécute collectstatic lors du déploiement)
  • vous avez besoin d'un fichier package.json correct (au moins le nom et la version de votre produit doivent être spécifiés dans ce fichier)
  • Les dépendances npm doivent être répertoriées dans package.json

La solution de @Jiaaro n'a pas fonctionné pour moi ... Provoque une erreur étrange ... /:

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

J'étais trop fatigué pour m'en occuper, alors j'ai regardé autour de moi et j'ai trouvé cette ressource intéressante:
- Le livre de recettes heroku-django

Ils expliquent comment vous pouvez ajouter vos propres scripts qui s'intègrent dans les buildpacks par défaut d'heroku.
A travaillé comme un charme.:)

Les choses ont changé au pays d'Heroku

Il n'y a pas besoin de packs de build multiples, de fichiers .builpack ou de packs de build personnalisés.Ajoutez simplement les packs de construction officiels Heroku requis à votre application heroku et ils s'exécuteront dans l'ordre entré.Utilisez l'option d'index pour les réorganiser selon vos besoins.

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

Il n'y a pas non plus besoin de tâches gunt, d'applications comme django-bower ou d'autres outils spécialisés qui utilisent les ressources du serveur et ralentissent le temps de construction.

Vous pouvez consulter mon tutoriel sur l'intégration transparente de Django + Bower + Heroku ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top