web-dev-qa-db-fra.com

Installer devDependencies sur Heroku

Je voudrais que Heroku crée mon application après l'avoir poussée pour ne pas avoir à pousser le dossier de construction à chaque fois que je fais une modification. Cependant, heroku installe uniquement les dépendances à partir de package.json et grunt (mon outil de génération) et tous ses composants sont dans devDependencies. Je voudrais les garder là où ils appartiennent. Quelle est la solution ici?

45
ionox0

Par défaut, Heroku installe uniquement les dépendances de production, ignorant les dépendances de développement sous devDependencies.

La définition de la variable de production npm sur false fait l'affaire:

heroku config:set NPM_CONFIG_PRODUCTION=false

Plus d'informations sont disponibles sur la page de support Heroku Node.js .

79
Edo

GarderNPM_CONFIG_PRODUCTIONtrue , j'ai utilisé les crochets de script de Herok :

"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;",
   ...
},

(Enfin) a fonctionné pour moi.

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

C'était assez pour moi. Merci à PixnBits pour l'astuce sur heroku-prebuild. Aussi - mon problème était avec babel. J'ai fini par déplacer babel-preset-es2015 et d'autres préréglages dans des dépendances, sinon babel s'est plaint des préréglages.

Mise à jour: 8/11/2017 J'ai eu des problèmes avec ça. Il semble que les choses aient changé (et npm est maintenant sur 5.3). Mais ce que je vois, c'est que le script heroku-prebuild s'exécute, puis le script post-installation s'exécute (mais j'essayais seulement d'installer -dev).

Donc, ce que j'ai fait pour que ça marche, c'est de lancer:

heroku config:set NPM_CONFIG_PRODUCTION=false

Et laissez les choses ainsi. J'aimerais une meilleure solution.

1
David Fridley

Pour désinstaller les dépendances, vous devez les faire

  1. Ajout de la préconstruction de Heroku:

    scripts ": {..." heroku-prebuild ":" npm install "}

  2. Add heroku-prebuild:

    scripts": { ... "heroku-prebuild": "npm install" }

vous pouvez l'utiliser dans votre script de génération "build": "npm install --only=dev" au cas où vous souhaiteriez encore effectuer plus d'opérations, par exemple en transpilant votre code avec babel, vous pouvez faire quelque chose comme ceci "build": "npm install --only=dev && babel src --out-dir dist --copy-files"

0
otoloye