2013-04-08 5 views
13

Ho impostato correttamente la mia app heroku con grunt buildpack. Quando spingo la mia app Node.js su heroku, eseguirò l'attività grunt appropriata.Come configurare Gruntfile per usare buss/sass su heroku?

Quello che mi piacerebbe è usare il pacchetto "grunt-contrib-compass" per compilare i miei file .scss. Ma ciò richiede la bussola eseguibile e non so come ottenerlo.

Ho controllato la documentazione di heroku e ho visto uno outdated doc that describes setting up compass with ruby ... ma non ho visto alcuna documentazione recente per configurarlo con Node.js.

Qualche idea?

risposta

19

Questo ha avuto un sacco di capire, ma ho finalmente riuscito a farlo funzionare. È necessario installare Ruby insieme all'app Node.js, in modo da poter installare le gemme appropriate. This gist è stato molto utile e più o meno descrive ciò che dovevo fare.

In sintesi, il processo è stato:

  • Creare i file .buildpacks, Gemfile e Gemfile.lock nella directory del progetto, con i seguenti contenuti:

.buildpacks

https://github.com/heroku/heroku-buildpack-ruby.git 
https://github.com/heroku/heroku-buildpack-nodejs.git 

Gemfile

source "http://rubygems.org" 
gem "sass" 

Gemfile.lock

GEM 
    remote: http://rubygems.org/ 
    specs: 
    sass (3.4.5) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    sass 

nb. Uso solo Sass, non Compass, ma suppongo che tutto ciò che dovrai fare per ottenere la bussola sia semplicemente aggiungere gem "compass" al Gemfile e, ad es. compass (1.0.3) sotto sass nel Gemfile.lock.

  • Aggiungi un multi buildpack per la vostra applicazione:

    heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git

  • Infine, spingere questi fuori di Heroku, e Ruby e Sass dovrebbero installare accanto al vostro Node.js app, che consente di utilizzare compiti da grugnito sass.

+0

thanks so much!Ho colpito questo inconveniente a tarda notte e stavo per tornare al mio vecchio processo di build + deploy, ma questa risposta ha funzionato al primo tentativo. evviva! – Dominick

+0

Nessun problema! Quanto sopra, anche se appare con il senno di poi, mi ha portato letteralmente * giorni * a capirlo. Molto felice di aver salvato a qualcun altro il dolore! –

+5

penso che questo sia l'approccio corretto. un'aggiunta; i multi-buildpack ora sono supportati senza alcun buildpack di terze parti: https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app –

0

ho ottenuto il mio app lavorare su Heroku utilizzando grunt-sass invece di grunt-contrib-sass. Per scambiare fuori solo fare npm install --save grunt-sass e poi scambiare il grugnito-task ovunque sia utilizzata (ad esempio grunt.loadNpmTasks('grunt-sass') invece di grunt.loadNpmTasks('grunt-contrib-sass')