web-dev-qa-db-fra.com

npm install packagename --save-dev ne met pas à jour package.json

Y a-t-il des raisons simples ou subtiles pour lesquelles package.json ne se mettrait pas à jour après avoir exécuté --save-dev? Voici ma commande:

npm install modulename --save-dev

Exécutez à partir de la racine du projet. La commande réussit, le nouveau module apparaît dans le répertoire node_modules comme prévu. De l'aide serait appréciée. J'utilise npm v 1.4.28

L'intégralité de mon actuel package.json est:

{
    "name": "FooWeb",
    "version": "1.0.0",
    "description": "Foo Web",
    "devDependencies": {
        "gulp": "3.8.11",
        "gulp-jshint": "1.9.2",
        "gulp-concat": "2.5.2",
        "gulp-sass": "1.3.3",
        "gulp-sourcemaps": "1.4.0",
        "gulp-watch": "4.1.1"
    }
}

Je reçois des avertissements lors de l'installation d'un package que je n'ai pas de champ de référentiel ou de fichier README, mais je pense que ce n'est pas lié.

48

J'avais aussi ce problème et ça me rendait fou.

Ce qui a finalement corrigé cela fonctionnait npm init. Cela a ajouté un tas de choses à mon package.json, mais ensuite --save-dev A fonctionné comme prévu. Même après avoir supprimé tous les nouveaux éléments ajoutés par npm init, --save-dev Fonctionnait toujours.

58
hook

J'avais le drapeau -g là, quand je l'ai retiré, cela a fonctionné comme prévu ...

7
Mustafah

accédez au fichier JSON -> cliquez avec le bouton droit sur les propriétés -> supprimez l'indicateur "lecture seule".

6
ndesign11

J'ai rencontré cela récemment et j'ai compris que pour une raison quelconque, c'était Atom qui empêchait la mise à jour du fichier, même sans que le fichier ne soit ouvert.

J'ai fermé l'éditeur, relancé mon installation npm, rouvert l'éditeur et tout était comme il se doit.

4
Phil Mayfield

Cela peut se produire dans VSCode (ou probablement dans d'autres éditeurs) si vous disposez d'un package.json ouvert.

Le fichier était actuellement mis à jour mais non rechargé dans l'EDI. Je pense que la valeur par défaut est de recharger uniquement si le fichier n'est pas édité? Ou peut-être que j'ai cliqué sur quelque chose pour ignorer les avertissements.

3
Simon_Weaver

La réponse de Mustafah ELBanna m'a aidé, mais je veux étendre sa réponse à d'autres débutants comme moi. Veuillez me corriger si je manque quelque chose d'important.

Si vous supprimez le -g flag, le module n'est pas installé globalement pour votre machine, mais uniquement localement dans votre projet. Si vous souhaitez également l'installer globalement, exécutez à nouveau la même commande mais maintenant avec -g au lieu de --save-devcomme ça :

npm install --save-dev [packagename]

npm install -g [packagename]

Il me semble que quelque chose pourrait mal se passer lors de l'appel de -g et --save en une seule ligne.

Mais encore une fois, je suis nouveau dans ce domaine et j'apprécie tous ceux qui souhaitent améliorer/corriger ma réponse.

2
Kenny

J'essayais d'installer les gruntjs en utilisant "npm install --save grunt-sass" mais le package.json ne se mettra pas à jour

J'ai fait tout ce qui est mentionné ci-dessus mais pas de chance. Mais ce qui est drôle, c'est que si j'essaie d'ajouter un package, dites "underscore (npm install --save underscore)", le fils est mis à jour. Je ne suis pas sûr que ce soit un problème avec le nom en tant que tel. Je l'ai installé en tant que super utilisateur.

1
Yoosaf Abdulla

La seule façon de résoudre ce problème était d'utiliser npm install --save-dev moduleName au lieu de npm install moduleName --save-dev. En utilisant npm install moduleName --save fonctionne bien pour moi, cependant. Uniquement lorsque j'utilise --save-dev, Je dois le mettre avant le moduleName. J'espère que cela aide n'importe qui.

0
M.Z.

Supprimer la dépendance de devDependencies dans le fichier package.json et réinstaller en utilisant uniquement --save a fonctionné pour moi

0
Rahul Makhija

Il y avait une erreur de syntaxe dans mon package.json qui me causait cela!

0
Jason Dorell

Pour moi, le problème était que j'avais copié la commande à partir de notepad ++, il y avait peut-être des caractères spéciaux là-dedans ou c'était les espaces, et cela ne mettait pas à jour mon package.json.

par exemple. n'a pas fonctionné; npm install --save debug pug jwt-simple method-override mongoose

Assurez-vous que lors de l'installation, vous nettoyez la ligne de commande, par exemple tous les espaces entre chaque module, car il peut également y avoir des caractères spéciaux en fonction de votre encodage.

Quand je l'ai corrigé, cela a fonctionné.

npm install --save debug pug jwt-simple method-override mongoose

Assurez-vous également que le package.json n'est pas ouvert dans un éditeur lorsque vous exécutez la commande, car tous les éditeurs ne gèrent pas cela correctement.

0
blamb

Vous voudrez peut-être d'abord vérifier votre configuration (npm config ls commande ou ~/.npmrc fichier). J'ai eu link=true.

Dans la version 5.5.1, cette option semble être ignorée lorsque - save est actif. Étant donné que - save-dev remplace - save, le mode lien est de nouveau actif.

Donc pour moi, les choses se passent comme si --save a remplacé --link qui à son tour a remplacé --save-dev.

0
RockyRoad

J'ai un .npmrc fichier qui utilise une API npm construite en interne pour récupérer les packages. Mon problème était que je n'étais pas connecté au VPN de mon entreprise.

0
koolkat

J'ai eu le même problème. Quand j'ai installé un paquet, il n'était pas affiché sur le package.json. J'ai donc supprimé le fichier package.json et exécuté à nouveau npm init. Après cela, cela fonctionnait et les packages que j'avais installés auparavant étaient également là sous les dépendances.

0
dilanSachi

Après avoir utilisé le générateur express, j'ai installé certains packages avec --s et aucun d'entre eux n'a été ajouté à package.json.

Ensuite, j'ai supprimé le package.json et exécuté npm init et tous ajoutés sans avoir à réinstaller

0
kochav

J'ai essayé toutes les commandes indiquées dans les réponses ci-dessus, mais j'ai réussi à installer npm-upgrade paquet.

npm i -g npm-upgrade puis npm-upgrade

0
Kanishk Gupta