IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

npm en version 5.7.0 est maintenant disponible,
L'alignement vers les pratiques DevOps se poursuit

Le , par Marco46

106PARTAGES

8  0 
npm de npm, Inc est à JavaScript ce que le célèbre Maven de la fondation Apache est à Java. Il fournit des outils de gestion du cycle de vie de l'application, et il s'adosse à un registre de packages pour gérer efficacement les dépendances d'exécution et de développement des projets JavaScript, qu'ils soient backend ou frontend.

npm est aussi le package manager par défaut de Node.js.


En dépit du foisonnement d'outils disponibles pour l'écosystème JavaScript et malgré les spécificités des développements backend et frontend, npm a su s'imposer comme la référence en la matière, notamment depuis que Bower arrive en fin de vie.

Le 8 février dernier, Laurie Voss a annoncé sur le compte Twitter de npm que le nombre de packages téléchargés chaque semaine avait atteint 4 milliards, publiant la courbe de l'évolution des téléchargements depuis 2013 :


Les premières versions de npm avaient de nombreux défauts (gestion du cache, gestion de la hiérarchie des packages, lenteurs dues à des téléchargements séquentiels des packages, gestion non déterministe des relations de dépendances...), aboutissant même à la création de Yarn, un gestionnaire de paquets s'adossant sur le registre npm et capable également d'utiliser celui de Bower.

Ces principaux problèmes ont été traités dans la version 5, au point de remettre en cause l'intérêt de l'usage de Yarn.

CHANGELOG condensé de la version 5 de npm et des différentes versions mineures :

v5.0.0 26/05/2017

  • Amélioration très significative des performances en implémentant le téléchargement concurrentiel et une meilleure gestion de la mémoire. Les performances de npm se rapprochent de celles de Yarn.
  • Une dépendance installée via npm install <nom-package> est désormais insérée par défaut dans le package.json. L'option --save devient donc dépréciée et une option --no-save a été ajoutée.
  • Un nouveau fichier package-lock.json est désormais généré automatiquement à chaque usage de npm install s'il est manquant. Ce fichier joue le même rôle que le trop méconnu npm-shrinkwrap.json. Le package-lock.json n'étant pas destiné à être publié sur le registre avec son package, le shrinkwrap est conservé si l'auteur du package souhaite le publier sur le registre afin de forcer le verrouillage des dépendances de son package.
  • Le CLI npm n'affiche plus l'arbre des dépendances complet dans la console, à la place un résumé plus simple et plus lisible est affiché.
  • Réécriture complète du système de cache et d'intégrité (utilisation de SHA512). Si votre projet utilise une version inférieure de npm, un npm cache clean est nécessaire avant de jouer un npm install pour mettre à niveau votre projet. Ajout de la commande npm cache verify pour vérifier l'intégrité du cache. Ajout de nouvelles options à la commande npm cache (--prefer-offline, --prefer-online, et --offline). Gestion des accès concurrents au cache.


v5.1.0 06/07/2017

  • La commande npm ls servant à lister les packages installés sur un projet affiche toutes les dépendances, ainsi que les dépendances manquantes.
  • Le fichier package-lock.json se met à jour automatiquement lors de l'ajout d'une dépendance via npm install <package-name>.


v5.2.0 11/07/2017

  • Ajout du binaire npx, écrit pour remplacer la commande npm run-script. En association avec le récent package node, il permet d'ajouter l'environnement Node.js souhaité aux dépendances de votre projet, et donc de choisir quelle version de Node.js utilisera votre projet indépendamment de la version globale installée sur votre machine.


v5.3.0 14/07/2017

  • Beaucoup de corrections de bogues sur npx.


v5.4.0 23/08/2017

  • Nouvelle fonctionnalité "did you mean" sur le CLI (Vérification des fautes de frappe sur les commandes à la manière du CLI de git).
  • Corrections de bogues de npx sur Windows.


v5.5.0 04/10/2017

  • Ajout de fonctionnalités de sécurité pour le registre (authentification à deux facteurs, gestion des tokens...).


v5.6.0 28/11/2017

  • Ajout de la possibilité de générer un package-lock.json sans pour autant réinstaller les dépendances via une nouvelle option --package-lock-only sur la commande npm install.
  • Corrections de bogues avec node9 empêchant l'exécution correcte de npm.


v5.7.0 21/02/2018

Et enfin le 21 février, l'équipe npm a publié la version 5.7.0 dont les apports principaux sont :

  • npm install résout automatiquement les conflits levés par les git merge sur les fichiers package-lock.json et npm-shrinkwrap.json.
  • Ajout d'une nouvelle commande npm ci. Cette commande doit être jouée dans le cadre d'une intégration continue à la place de npm install. Elle assure que l'installation des dépendances se fait exclusivement sur la base du fichier package-lock.json, et si l'installation n'est pas possible, elle sort en erreur permettant de faire échouer le job d'intégration continue proprement. Le répertoire node_modules/ est toujours réinstallé en intégralité.


Cette dernière fonctionnalité complète les efforts effectués tout au long du développement de la version 5 de npm pour obtenir un comportement rigoureux, consistant et compatible avec les pratiques promues par le mouvement DevOps.

L'équipe de développement indique par la voix de Rebecca Turner que les mises à jour futures arriveront à un rythme plus soutenu qu'auparavant, leur backlog étant manifestement chargé, ce qui n'augure que du bon compte tenu de la qualité des dernières versions.

Une nouvelle version du site d'exploration des packages en préparation

Notons également la publication d'une version preview du site d'exploration des packages.

Sources :
- Annonce sur le blog officiel.
- Notes de versions sur github.
- Compte Twitter de npm, Inc.

Et vous ?

Utilisez-vous npm ou un autre package manager pour vos projets ?
Préférez-vous Yarn à npm malgré les améliorations de la version 5 ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Marco46
Expert éminent sénior https://www.developpez.com
Le 23/02/2018 à 11:58
Avez-vous eu le temps d’installer npm 5.7.0 ? Si oui, avez-vous rencontré des problèmes similaires ?
Wouaw ! Hier soir après avoir rédigé la news j'ai mis à jour mon npm et je me rappelle pas de quelle version j'ai installé. J'avais la tête dans le sac (ça m'a pris 3h pour rédiger la news) et je voulais absolument tester npx et l'exécution de node en tant que dépendance de projet ou dynamiquement via npm avant d'aller me coucher.

J'ai même pas fait gaffe à cette histoire :'(

Grand merci à Michael Guilloux pour le gros complément d'information !

EDIT : Moralité, ne jamais se fier au blog, toujours se fier aux notes de releases techniques !
3  0 
Avatar de bilgetz
Membre averti https://www.developpez.com
Le 23/02/2018 à 8:48
Attention avec cette version, il semble que certain ai eu des problemes avec :
https://github.com/npm/npm/issues/19883

il faut passer en 5.7.1
1  0 
Avatar de headmax
Membre chevronné https://www.developpez.com
Le 23/02/2018 à 11:25
Peut être une boulette dans une récursivité comme tu le dit en employant un chown -R user:user *
1  0 
Avatar de Luckyluke34
Membre émérite https://www.developpez.com
Le 23/02/2018 à 13:13
Ajout d'une nouvelle commande npm ci. Cette commande doit être jouée dans le cadre d'une intégration continue à la place de npm install. Elle assure que l'installation des dépendances se fait exclusivement sur la base du fichier package-lock.json, et si l'installation n'est pas possible, elle sort en erreur permettant de faire échouer le job d'intégration continue proprement. Le répertoire node_modules/ est toujours réinstallé en intégralité.
Je suis pas expert de npm, mais c'est pas un gros bout de scotch avec un nom beaucoup trop conceptuel cette commande ?
1  0 
Avatar de Marco46
Expert éminent sénior https://www.developpez.com
Le 23/02/2018 à 14:11
Je comprends pas trop ta question/remarque.

Dans une CI quand tu veux builder un tag donné, tu veux que le résultat soit invariable dans le temps, y compris en tenant compte des dépendances, et des dépendances des dépendances, et des dépendances des dépendances des dépendances, etc ...

Cette commande permet de réaliser ça, et elle permet surtout de forcer l'équipe de dev à gérer ses dépendances de manière stricte. Si un DevOps impose l'usage de npm ci sur son job Jenkins de build du livrable, l'équipe de dev est obligée :
- de fixer toutes ses dépendances.
- d'avoir un package-lock.json à jour.

Sinon la commande exit en erreur, et le job est en échec.

Sans cette commande ce n'est pas garanti.
1  0 
Avatar de Luckyluke34
Membre émérite https://www.developpez.com
Le 23/02/2018 à 16:21
Je ne remets pas en cause l'utilité mais le fait de l'appeler npm ci. Il y aurait peut-être eu moyen de trouver un nom qui reste agnostique par rapport au contexte extérieur. Continuous Integration ne me parait pas faire partie du vocabulaire qui devrait être utilisé dans des primitives d'un package manager. Là ça fait très "fan service magique rien que pour vous"...
0  0 
Avatar de koyosama
Membre éprouvé https://www.developpez.com
Le 14/05/2018 à 4:04
Ouais tester et ça fait mal au cul.
0  0 
Avatar de Marco46
Expert éminent sénior https://www.developpez.com
Le 14/05/2018 à 10:54
Merci pour ta contribution mais pourrais-tu développer stp ? :p
0  0