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 :
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
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/cli
dans 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 !