Récupérer la dernière version d'un package npm

Récupérer la dernière version d'un package npm

Il peut s'avérer utile de récupérer la dernière version d'un package npm (Node.js) lorsque l'on a des dépendances dans nos projets, notamment lorsque l'on build de nouveaux packages.
Nous allons voir cela, avec en bonus, comment intégrer cela dans une pipeline Gitlab CI !

Préambule

Dans mon récent article sur  :
Automatiser l'export de son coffre-fort Bitwarden consultable ici :

Automatiser l’export de son coffre-fort Bitwarden
Vous souhaitez effectuer des backups de votre coffre-fort Bitwarden ? Cet article est fait pour vous ! Une image Docker qui a été build par mes soins vous permettra de sauvegarder votre coffre-fort au cas où la plateforme SaaS est indisponible. Présentation Afin de stocker vos mots de passes dans…

J'ai eu besoin d'utiliser la CLI Bitwarden qui se présente sous la forme d'un package npm @bitwarden/cli et de l'avoir en tant que dépendance dans mon image Docker afin d'y ajouter ma couche pour y intégrer l'export.

Afin d'avoir une version à jour de du package npm @bitwarden/cli, j'ai crée une pipeline avec Gitlab CI qui build mon image Docker à chaque nouvelle version du package npm.
J'ai donc eu besoin de récupérer sa dernière version, de la manière la plus fiable possible.

Analyser un package npm

Il est possible d'analyser un package npm et d'y récupérer beaucoup d'informations comme les dépendances contenues dans le package npm ainsi que sa dernière version avec la commande suivante :

npm view @bitwarden/cli

Cette commande nous donne un retour avec beaucoup d'informations.
Filtrons notre sortie afin de ne récupérer uniquement la version la plus récente du package npm :

npm view @bitwarden/cli dist-tags.latest

Pipeline Gitlab CI

Intégrons maintenant cette commande dans notre pipeline Gitlab CI

Gitlab CI

Commençons par déclarer un stage nommé get-latest en utilisant l'image Docker node:alpine comme ceci :

get-latest:
  image: node:alpine
  stage: get-latest
  script:
    - echo "BW_VERSION=$(npm view @bitwarden/cli dist-tags.latest)" >> latest.env
  artifacts:
    reports:
      dotenv: latest.env
  only:
  - schedules

J'ai utilisé les artifacts afin de récupérer la sortie de la commande dans un fichier qui sera récupérer dans le stage suivant.

Maintenant que nous avons la dernière version du package npm @bitwarden/clidans une variable, utilisons là pour créer un tag pour notre image Docker en déclarant un stage nommé build et intégrons la commande docker tag comme ceci :

docker tag bw-export:${BW_VERSION} anomyn/bw-export:${BW_VERSION}

N'hésitez pas à ajouter cette variable dans votre Dockerfile avec l'instruction ARG lorsque vous effectuez un npm install afin d'installer également la dernière version du package npm voulu.

Nous avons maintenant une image Docker qui est build et tag avec la version la plus à jour du package npm !