ho avuto la stessa domanda (vedi Avoid npm refresh after every deployment on Heroku).
Heroku forza un download/build/ecc. sequenza perché devono avviare un'app con una 'lavagna vuota': per pulire i file non eliminati precedenti, quando spostano la tua app su un altro server, quando assegni nuovi web dynos, ecc.
Il problema è chiaramente con i pacchetti nativi e ricompilazione. Per tutti i pacchetti js-only, li impegno con il mio progetto e li rimuovo da package.json. Guadagna qualche secondo, ma non così tanto.
Devo essere possibile precompilare e eseguire il commit di moduli nativi (eseguo con successo wkhtml2pdf su Heroku, ad esempio, con un binario compilato per linux-amd64), se si accede a una macchina Linux (o VM) con la stessa configurazione - ad oggi, Linux [...] 2.6.32-350-ec2 #57-Ubuntu SMP [...] x86_64 GNU/Linux
.
Anche se non lo consiglierei come soluzione definitiva, poiché è probabile che si rompa un giorno - Non mi sembra che heroku garantisca la piattaforma su cui gira un'applicazione.
Il [build-pack] (https: // github.it/heroku/heroku-buildpack-nodejs) (che è un codice che trasforma il tuo codice sorgente in quello che viene distribuito su Heroku) dovrebbe già essere in cache 'node_modules' tra le build. Almeno lo dice nel README. Sei sicuro che questo è ciò che sta rallentando la tua build? – friism
@friism Immagino che utilizzino il caching NPM standard, quindi i moduli devono ancora essere decompressi, copiati e, soprattutto, ricompilati dopo ogni push. Se si dispone di moduli con una struttura di dipendenza promiscua o in base alle estensioni C++ (mongodb, socket.io, ecc.) È necessario un po 'di tempo. –