web-dev-qa-db-fra.com

Assurez-vous que `npm install --save` ajoute une version stricte à package.json

Lorsque vous exécutez npm install --save somepackage, il ajoute généralement quelque chose comme ceci dans package.json:

"dependencies": {
    "somepackage": "^2.1.0"
}

Étant donné que la version est précédée d'un caret (^), cela signifie que si vous exécutez ultérieurement npm install, la version 2.3.0 risque d'être installée à la place. Cela peut être indésirable pour des raisons assez évidentes. npm shrinkwrap est utile, mais ne résout pas vraiment le problème.

Donc, j'ai plusieurs questions:

  1. Lors de l'installation d'un package, est-il possible d'indiquer que vous souhaitez qu'il soit défini sur une version spécifique de package.json (pas de caret avant le numéro de version)?
  2. Lors de la publication d'un paquet sur npm, y a-t-il un moyen d'empêcher par défaut d'inclure le curseur avant la version lorsque d'autres développeurs installent votre paquet?
55
twiz

Pour spécifier par défaut une version exacte, vous pouvez modifier votre configuration npm avec save-exact :

npm config set save-exact true

Vous pouvez également spécifier la version avec un tilde avec save-prefix

Et, non, vous ne pouvez pas forcer l'utilisateur à mettre à jour une version mineure ou une version de correctif, NPM utilise semver et c'est la méthode recommandée de publication des packages.

89
Pierre Inglebert

Vous pouvez changer le comportement par défaut en utilisant l'option --save-exact.

// npm
npm install --save --save-exact react

// yarn
yarn add --exact react

J'ai créé un article de blog à ce sujet si quelqu'un le recherche à l'avenir.

http://www.dalejefferson.com/blog/how-to-save-exact-npm-package-versions/

4
Dale Jefferson

Courir:

npm install --save --save-exact my-module@my-specific-version

Ajouter une réponse pour rendre ce conseil plus facile à voir.

0
Zanon