2014-04-09 9 views
35

Chciałbym, aby Heroku zbudował moją aplikację po tym, jak ją wypchnę, aby nie musiałem naciskać folderu kompilacji za każdym razem, gdy dokonuję zmiany. Jednak heroku instaluje tylko zależności z pakietu.json i grunt (moje narzędzie do budowania), a wszystkie jego komponenty są w zależnościach. Chciałbym ich zatrzymać tam, gdzie ich miejsce. Jakie jest obejście?Zainstaluj devDependencies na Heroku

+1

Czy możesz użyć niestandardowego buildpacka w ten sposób? https://github.com/gcpantazis/heroku-buildpack-php-gruntjs – catsby

Odpowiedz

63

Heroku domyślnie instaluje tylko zależności produkcyjne, ignorując zależności deweloperskie pod devDependencies.

Ustawianie zmiennej produkcji npm do false rade:

heroku config:set NPM_CONFIG_PRODUCTION=false 

Więcej informacji można uzyskać pod Heroku Node.js Support page.

+2

Ustawi to Twój NODE_ENV w wersji rozwojowej, co może spowolnić twoją aplikację. – unblevable

+6

@unblevable Nie sądzę tak: '' ' -----> wykryte node.js aplikacja -----> Tworzenie środowiska wykonawczego NPM_CONFIG_LOGLEVEL = błąd NPM_CONFIG_PRODUCTION = false NODE_ENV = produkcja NODE_MODULES_CACHE = true '' ' – bithavoc

+2

Zrobiłem heroku config: set NPM_CONFIG_PRODUCTION = false i retarted dyno, a zależności dev nadal nie będą instalować – Lev

2

KeepingNPM_CONFIG_PRODUCTIONtrue użyłem 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;", 
    ... 
}, 

(wreszcie) pracował dla mnie.

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

To mi wystarczyło. Dzięki PixnBits za podpowiedź na temat heroku-prebuild. Również - mój problem dotyczył babel. Zakończyłem przenoszenie ustawień babel-esset-es2015 i innych ustawień do zależności, inaczej babel narzekał na ustawienia wstępne.

Aktualizacja: 8/11/2017 Miałem problemy z tym. Wygląda na to, że rzeczy się zmieniły (i npm jest teraz na 5.3). Ale widzę, że uruchamiany jest skrypt heroku-prebuild, a następnie uruchamiany jest skrypt poinstalacyjny (ale ja tylko próbowałem zainstalować -dev).

Więc co ja robię, że działa, to po prostu uruchom:

heroku config:set NPM_CONFIG_PRODUCTION=false 

I po prostu zostawić to ustawione w ten sposób. Chciałbym lepsze rozwiązanie.