Ich möchte, dass Heroku meine App erstellt, nachdem ich sie gedrückt habe, damit ich den Build-Ordner nicht jedes Mal hochschieben muss, wenn ich etwas ändere. Heroku installiert jedoch nur die Abhängigkeiten von package.json und grunt (mein Build-Tool) und alle seine Komponenten sind in devDependencies. Ich möchte sie dort behalten, wo sie hingehören. Was ist die Problemumgehung hier?DevDependencies auf Heroku installieren
Antwort
Heroku installiert standardmäßig nur die Produktionsabhängigkeiten und ignoriert die Entwicklungsabhängigkeiten unter devDependencies
.
Einstellen der npm Produktion Variable false
der Trick:
heroku config:set NPM_CONFIG_PRODUCTION=false
Weitere Infos bei der Heroku Node.js Support page zur Verfügung stehen.
Dies setzt Ihre NODE_ENV auf Entwicklung, die Ihre App verlangsamen kann. – unblevable
@unblevable Ich glaube nicht: '' ' -----> Node.js App erkannt -----> Erstellen von Laufzeitumgebung NPM_CONFIG_LOGLEVEL = Fehler NPM_CONFIG_PRODUCTION = false NODE_ENV = Produktion NODE_MODULES_CACHE = true '' ' – bithavoc
Ich habe heroku config: set NPM_CONFIG_PRODUCTION = false und retarted Dyno und die Dev-Abhängigkeiten werden immer noch nicht installiert – Lev
KeepingNPM_CONFIG_PRODUCTION
true
, benutzte ich 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;",
...
},
(Endlich) für mich gearbeitet.
scripts": {
...
"heroku-prebuild": "npm install --only=dev"
}
Das war genug für mich. Danke an PixnBits für den Hinweis auf Heroku-Prebuild. Auch - mein Problem war mit Babel. Am Ende habe ich babel-preset-es2015 und andere Presets in Abhängigkeiten verschoben, sonst hat sich babel über Presets beschwert.
Update: 8/11/2017 Ich habe Probleme damit. Es sieht so aus, als hätten sich die Dinge geändert (und npm ist jetzt auf 5.3). Aber was ich sehe, ist, dass das Skript heroku-prebuild ausgeführt wird, und dann wird das Skript nach der Installation ausgeführt (aber ich habe nur versucht, -dev zu installieren).
Also, was ich getan habe, dass funktioniert, ist einfach auszuführen:
heroku config:set NPM_CONFIG_PRODUCTION=false
Und lassen Sie es auf diese Weise festgelegt. Ich würde eine bessere Lösung lieben.
Könnten Sie ein benutzerdefiniertes Buildpack wie dieses verwenden? https://github.com/gcpantasis/heroku-buildpack-php-gruntjs – catsby