web-dev-qa-db-fra.com

"npm install" installe toutes les dépendances dans le répertoire node_modules, au lieu de les imbriquer

J'ai besoin de savoir si le comportement suivant est normal.

Quand je npm install, chaque package de mon package.json et les dépendances, ne sont pas installés imbriqués plus, mais chaque dépendance est installée dans le node_modules répertoire. Cela fait mon node_modules répertoire soufflé et ressemble à ceci:

Screenshot of node_modules directory

Cela s'est produit depuis que j'ai mis à jour npm et node.

Maintenant je lance:

npm -v 3.3.6
node -v 4.2.1
python 2.7
windows 7
wamp

Ma package.json le fichier ressemble à ceci:

{
  "private": true,
  "devDependencies": {
    "gulp": "^3.8.8"
  },
  "dependencies": {
    "laravel-elixir": "^3.0.0",
    "bootstrap-sass": "^3.0.0"
  }
}

C'est la norme laravel package.json fichier.

Existe-t-il un moyen d'avoir à nouveau des répertoires imbriqués, parce que je n'aime pas un tel article soufflé avec plus de 100 sous-répertoires.

41
LoveAndHappiness

C'est le nouveau comportement de npm 3 selon ce blog npm .

35
sagie

pdate: Comme Erik Pukinskis l'a mentionné dans les commentaires: Depuis npm 3.5, le support de --legacy-bundling A été abandonné.


Oui, il existe un moyen d'avoir à nouveau des répertoires imbriqués en modifiant le comportement par défaut de npm (version 3 au moment de la rédaction):

  1. Supprimez le dossier node_modules Actuellement présent.

  2. Dites à npm d'installer avec le bundle hérité pour cette installation:

    npm install --legacy-bundling

Une alternative "permanente":

  1. Définissez votre configuration npm pour toujours utiliser le regroupement hérité ...

    npm set legacy-bundling=true

  2. .. et exécutez comme d'habitude:

    npm install

Remarque: la récupération des dépendances avec le regroupement hérité prendra beaucoup plus de temps car plusieurs versions différentes des mêmes dépendances seront installées.

Disclaimer: En tant qu'utilisateur non-Windows, je n'ai pas besoin de dépendances plates et je veux trouver facilement les dépendances auto-déclarées en faveur de la déduplication automatique. Étant donné que l'installation des dépendances npm sans regroupement hérité prend déjà un temps incroyable, je suis généralement prêt à passer ces minutes d'installation supplémentaires. Il revient à 5 répertoires de plus de 700+ (...) dans une configuration Laravel Elixir avec bootstrap (non-sass), font-awesome et jquery ajouté.

61
luchaos