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
Odpowiedz
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.
Ustawi to Twój NODE_ENV w wersji rozwojowej, co może spowolnić twoją aplikację. – unblevable
@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
Zrobiłem heroku config: set NPM_CONFIG_PRODUCTION = false i retarted dyno, a zależności dev nadal nie będą instalować – Lev
KeepingNPM_CONFIG_PRODUCTION
true
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.
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.
Czy możesz użyć niestandardowego buildpacka w ten sposób? https://github.com/gcpantazis/heroku-buildpack-php-gruntjs – catsby