2014-04-09 44 views
35

Mi piacerebbe avere Heroku compilare la mia app dopo averlo premuto in modo che non debba spingere la cartella di compilazione ogni volta che apporto una modifica. Tuttavia heroku installa solo le dipendenze da package.json e grunt (il mio strumento di compilazione) e tutti i suoi componenti sono in devDependencies. Mi piacerebbe tenerli li dove appartengono. Qual è la soluzione alternativa qui?Installa devDependencies su Heroku

+1

Potresti usare un buildpack personalizzato come questo? https://github.com/gcpantazis/heroku-buildpack-php-gruntjs – catsby

risposta

63

Heroku installa di default solo le dipendenze di produzione, ignorando le dipendenze di sviluppo sotto devDependencies.

Impostazione della variabile di produzione NPM al false fare il trucco:

heroku config:set NPM_CONFIG_PRODUCTION=false 

Maggiori informazioni sono disponibili presso la Heroku Node.js Support page.

+2

Imposta il tuo NODE_ENV per lo sviluppo, che potrebbe rallentare la tua app. – unblevable

+6

@unblevable Io non la penso così: '' ' -----> Node.js app rilevato -----> Creazione di ambiente di runtime NPM_CONFIG_LOGLEVEL = errore NPM_CONFIG_PRODUCTION = false NODE_ENV = produzione NODE_MODULES_CACHE = true '' ' – bithavoc

+2

Ho fatto heroku config: set NPM_CONFIG_PRODUCTION = false e riavviato dyno e le dipendenze di sviluppo non verranno installate – Lev

2

KeepingNPM_CONFIG_PRODUCTIONtrue, ho usato Heroku's script hooks:

"scripts": { 
    ... 
    "heroku-prebuild": "export NPM_CONFIG_PRODUCTION=false; export NODE_ENV=; NPM_CONFIG_PRODUCTION=false NODE_ENV=development npm install --only=dev --dev", 
    "heroku-postbuild": "export NPM_CONFIG_PRODUCTION=true; export NODE_ENV=production;", 
    ... 
}, 

(finalmente) ha lavorato per me.

1
scripts": { 
    ... 
    "heroku-prebuild": "npm install --only=dev" 
} 

Questo è stato abbastanza per me. Grazie a PixnBits per il suggerimento su heroku-prebuild. Inoltre, il mio problema era con Babele. Alla fine ho spostato babel-preset-es2015 e altri preset in dipendenze altrimenti Babel si è lamentato dei preset.

Aggiornamento: 8/11/2017 Ho avuto problemi con questo. Sembra che le cose siano cambiate (e npm è su 5.3 ora). Ma quello che vedo è che viene eseguito lo script di prebuild di heroku, e quindi viene eseguito lo script di post-installazione (ma stavo solo provando a installare -dev).

Quindi quello che ho fatto che funziona è quello di eseguire solo:

heroku config:set NPM_CONFIG_PRODUCTION=false 

E proprio lasciarla impostata in quel modo. Mi piacerebbe una soluzione migliore.