Cover Photo by Barn Images on Unsplash
Dans le précédent article de cette série, nous avons pu voir les mécanismes autour du versioning de nos librairies via npm
Commande incluse dans Node qui vous permet d’exécuter un package. Cette commande va rechercher la présence du package en local (dans les dépendances du projet courant, ou dans une installation globale). Si elle ne le trouve pas, elle est capable de réaliser un téléchargement temporaire pour une exécution à la volée !
npx my-package
Commande très utile pour tester des packages de type cli ou autres outils indépendants de votre projet (exemples dans la suite de l’article !!)
npm audit
Vérifiez les failles de sécurité potentiellement présentes dans votre projet. Cette commande permet de réaliser une analyse de votre arbre de dépendance, mais aussi de proposer des correctifs en mettant à jour certains packages. Vous avez sûrement déjà vu ce genre de rapport, qui est automatiquement exécuté et affiché à la fin d’un npm install
Tips: Utilisez la commande npm audit --omit=dev
pour exclure les devDependencies
Exemple de résultat d’analyse via la commande npm audit
La commande est capable de proposer des corrections de version pour réduire au maximum les failles de sécurité présentes :
semver
compatible => x.Y.Z)En utilisant la sous-commande npm audit fix
, l’ensemble des patchs semver
compatible sont appliqués automatiquement :
npm install
, le package-lock.json
est donc mis à jour aussi--force
pour installer les updates majeures
Exemple de résultat de correctif via la commande npm audit fix
nvm
: Gérer plusieurs versions de NodeCet outil permet une gestion simplifiée des différentes versions de node entre plusieurs projets. Il est compatible sur tous les OS (macOS, linux) et même windows (pas le même outil, mais un équivalent)
nvm install 14.7.0 # installation d'une version spécifique
nvm install 10.24.1
nvm use 10.24.1 # utilisation d'une version installée pour le répertoire courant
Il est possible d’aller encore plus loin avec un fichier .nvmrc
contenant la version de node attendue. Un simple nvm use
permet de switcher sur la version indiquée.
On peut aussi ajouter à son terminal un script pour switcher automatiquement de version 🤩
Note : le fichier de config est automatiquement détecté par IntelliJ
Pour les utilisateurs macOS et linux, vous pouvez aussi passer à l’étape supérieure en utilisant l’outil asdf
qui permet la gestion de version d’un énorme panel d’outils (node, java, go, postgres, yarn, etc…)
La documentation complète ici
engines
: Forcer une version de nodeIl est possible de donner des indications quant aux versions utilisées sur un projet. Il suffit de rajouter un bloc de configuration dans le package.json
, ainsi qu’un fichier à la racine du projet, .npmrc
, avec pour contenu engine-strict=true
"engines": {
"node": ">=18.0.0",
"npm": ">= 8.15.0"
}
Exemple de blocage si on utilise des versions de node ou npm non compatibles avec celles spécifiées
only-allow
: Forcer un package managerVous connaissez peut-être des gestionnaires de package autre que npm : yarn, pnpm, ..
Chacun possède une gestion du lockfile différente (pour npm, c’est le package-lock.json
)
Il peut être utile de bloquer l’utilisation d’un gestionnaire différent, afin de s’assurer une même résolution au sein d’une équipe.
Pour ma part, je rajoute un script au package.json
, nommé preinstall
. C’est un nom spécifique qui lui permet d’être exécuté avant chaque npm install
. J’utilise le package only-allow
qui fait échouer l’installation en cas de mauvais gestionnaire utilisé. (Vous remarquerez aussi l’utilisation de npx
🙄)
"scripts": {
"preinstall": "npx only-allow npm"
}
Exemple de blocage si on utilise yarn, en considérant un package.json avec le script indiqué précédemment
npm-check
: Vérification des versions de nos packagesCe package vous permet d’afficher un rapport concernant les nouvelles versions de vos dépendances, ainsi que des propositions de mise à jour.
semver
, latest viséIl permet aussi de détecter des packages non utilisés (vérifiez avant de supprimer, d’expérience, les faux positifs sont courants)
Il existe un mode interactif, qui vous permet de mettre à jour plusieurs packages d’un coup :
npx npm-check -u
npm install <package>@<version>
Dans cette seconde partie, j’ai pu vous présenter plusieurs outils/packages pour vous aider dans vos projets node :
npm audit
pour l’analyse des failles de sécurité dans nos packages ;npx
pour exécuter des packages ;nvm
pour gérer plusieurs versions de node (et son equivalent plus global asdf
) ;config engines
pour spécifier les versions de node et npm ;only-allow
pour spécifier le gestionnaire de package à utiliser ;npm-check
pour verifier rapidement des versions des packages.Vous n’êtes pas obligés d’utiliser tous ces outils pour être efficace, prenez ceux qui vont répondre à vos besoins et résoudre vos problématiques.