Question Comment empêche-t-on l'installation des modules NPM "devDependencies" pour Node.js (package.json)?


J'ai ceci dans mon fichier package.json (version raccourcie):

{
  "name": "a-module",
  "version": "0.0.1",
  "dependencies": {
    "coffee-script":      ">= 1.1.3"
  },
  "devDependencies": {
    "stylus":             ">= 0.17.0"
  }
}

J'utilise la version 1.1.1 de NPM sur Mac 10.6.8.

Lorsque j'exécute la commande suivante à partir de la racine du projet, elle installe à la fois dependencies  et  devDependencies:

npm install

J'étais sous l'impression que cette commande a installé le devDependencies:

npm install --dev

Comment puis-je le faire npm install installe seulement dependencies (donc l'environnement de production ne reçoit que ces modules), tandis que quelque chose comme npm install --dev installe les deux dependencies et devDependencies?


450
2018-02-13 21:25


origine


Réponses:


le npm install commande va installer le devDependencies le long d'autres dependencies lorsqu'il est exécuté dans un répertoire de package, dans un environnement de développement (par défaut). Pour contourner cela, utilisez npm install --production ou définir le NODE_ENV variable d'environnement à production.

Voici quelques informations supplémentaires.


Modifier: 

À partir de v3.3.0 de npm (2015-08-13), en utilisant npm install --production va lancer un avertissement:

Utilisation du --production L'option est obsolète. Utilisation --only=production au lieu.

Utilisation npm install --only=production à installer seulement  dependencies, et pas devDependencies,indépendamment de la valeur de la NODE_ENV variable d'environnement.

Référence: npm docs | npm changelog


622
2018-02-14 11:33



Je rencontre aussi ce problème! L'installation de npm est quelque peu déroutante et les posts web continuent d'afficher les drapeaux -d / - dev comme s'il y avait un mode d'installation explicite de 'développement'.

  • npm installer va installer les deux "dépendances" et "devDependencies"

  • npm install --production n'installera que "dépendances"

  • npm installer --dev n'installera que "devDependencies"


196
2017-10-25 19:50



La nouvelle option est la suivante:

npm install --only=prod

Si vous voulez installer uniquement devDependencies:

npm install --only=dev

106
2017-12-22 20:08



Si vous lisez ce POST en 2016, s'il vous plaît atteindre ce que vous voulez en utilisant

--only={prod[uction]|dev[elopment]} 

L'argument provoquera l'installation de devdependencies ou de non-devDependencies, indépendamment de NODE_ENV.

de: https://docs.npmjs.com/cli/install


37
2018-04-08 20:13



Lorsque vous utilisez "npm install", les modules sont chargés et disponibles dans votre application, qu'il s'agisse de "devDependencies" ou de "dépendances". Somme de cette idée: tout ce que votre package.json définit comme une dépendance (n'importe quel type) est installé dans node_modules.

Le but de la différence entre les dépendances / devDependencies / optionalDependencies est ce que les utilisateurs de votre code peuvent faire w / npm pour installer ces ressources.

Par la documentation: https://npmjs.org/doc/json.html...

Si quelqu'un envisage de télécharger et d'utiliser votre module dans leur   programme, alors ils ne veulent probablement pas ou ont besoin de télécharger et de construire   le cadre de test ou de documentation externe que vous utilisez.

Dans ce cas, il est préférable de lister ces éléments supplémentaires dans un   devDependencies hash.

Ces choses seront installées chaque fois que le drapeau de configuration --dev   est réglé. Ce drapeau est défini automatiquement lorsque vous faites un lien npm ou quand   faire npm installer à partir de la racine d'un paquet, et peut être géré comme   tout autre paramètre de configuration npm. Voir config (1) pour plus sur le   sujet.

Toutefois, pour résoudre cette question, si vous souhaitez installer UNIQUEMENT les "dépendances" à l'aide de npm, la commande suivante est:

npm install --production

Cela peut être confirmé en examinant le commit Git qui a ajouté ce filtre (avec d'autres filtres [énumérés ci-dessous] pour fournir cette fonctionnalité).

Filtres alternatifs utilisables par npm:

--save          => updates dependencies entries in the {{{json}}} file
--force         => force fetching remote entries if they exist on disk 
--force-latest  => force latest version on conflict
--production    => do NOT install project devDependencies
--no-color      => do not print colors

@dmarr essayez d'utiliser npm install --production


18
2018-04-06 20:08



Si vous avez déjà installé toutes vos dépendances et que vous souhaitez éviter de télécharger à nouveau vos packages de production à partir de NPM, vous pouvez simplement taper:

npm prune --production

Cela supprimera vos dépendances dev de votre node_modules dossier, ce qui est utile si vous essayez d'automatiser un processus en deux étapes comme

  1. Webpack mon projet, en utilisant les dépendances de dev
  2. Construire une image Docker en utilisant uniquement des modules de production

Fonctionnement npm prune entre-deux vous sauvera de devoir tout réinstaller!


16
2017-12-30 18:22



npm installera les dépendances de dev lors de l’installation depuis un paquet (s’il y a un package.json dans le répertoire courant). S'il provient d'un autre emplacement (registre npm, repo git, emplacement différent sur le système de fichiers), il installe uniquement les dépendances.


14
2018-04-05 05:30