Variables d’environnements avec scripts NPM

Il existe un moyen simple et sûr mais pourtant méconnu de passer des variables d’environnement à des scripts NPM

TL;DR

Le procédé se déroule en 3 étapes :

  1. indiquer les variables dans un fichier .npmrc
  2. passer les variables nécessaires dans le fichier package.json
  3. utiliser ces variables dans vos scripts (bash par exemple)

.npmrc

Commencez par ajouter le fichier .npmrc à votre gitignore puisque tout l’intérêt de la manipulation est de pouvoir cacher ces variables (mot de passes notamment) à Git.

Créez un fichier .npmrc.sample avec les différentes variables sous la forme :

FTP_ADDRESS=
FTP_USERNAME=
FTP_PASSWORD=

Ce fichier vide sera ajouté à Git sans problème pour signifier aux autres développeurs les différentes variables attendues.

Dupliquez ce fichier puis renommez-le en .npmrc tout simplement, et indiquez les bonnes valeurs.

package.json

Dans votre fichier package.json, créez une nouvelle ligne dans la partie “scripts”, par exemple sous cette forme :

“deploy”: “user=$npm_config_FTP_USERNAME pwd=$npm_config_FTP_PASSWORD host=$npm_config_FTP_ADDRESS deploy.sh”

deploy.sh

Dans votre script deploy.sh, vous retrouverez les variables comme d’habitude de cette manière, par exemple pour envoyer vos fichiers par FTP :

lftp -d -u $user -e “set ssl:verify-certificate no ; mirror — use-pget-n=10 -e -p -R dist dist ; quit” ftp://$host

npm run

Et voilà ! Ne reste plus qu’à lancer la commande via NPM, et les variables seront chargées automatiquement :

npm run deploy

J’utilise ce procédé depuis quelques mois pour des tâches récurrentes mais qui nécessitent des identifiants : publier du code, se connecter et effectuer des actions en SSH, utiliser wp-cli (ligne de commande pour Wordpress), etc. Simple mais efficace !