Publié le 01/13/2018, rédigé par Davy CLAISSE

Yarn

Améliorer la commande Yarn

Pré-requis : avoir installé Yarn.

Qu'entend-on par booster la commande Yarn ?

Par défaut, yarn dispose déjà de paramètres à la ligne de commande. Celui le plus utilisé étant le paramètre run puisqu'il permet d'exécuter les scripts déclarés dans le fichier package.json, par exemple :

yarn run mon_script

Or, ce paramètre ne permet pas d'enchaîner les appels. En comparaison, avec Maven, il est possible d'écrire :

mvn clean package deploy

Mais avec Yarn il faudra écrire :

yarn run clean
yarn run package
yarn run deploy

Ce qui est fastidieux.

Quelle solution propose-t-on ?

Tout simplement d'ajouter à notre path un petit script baptisé yr qui, lorsque l'on va taper :

yr clean package deploy

Va se charger de décomposer les arguments en appels successifs :

yarn run clean
yarn run package
yarn run deploy

En parallèle, le script reconnaîtra si l'argument est un paramètre natif de yarn ou un élément du pacakge.json et dans le premier cas, transférera l'argument à Yarn.

Par exemple :

yr install gulp

Invoquera :

yarn install gulp

Comment l'installer ?

  1. Rendre Yarn accessible depuis votre PATH système.
  2. Ajouter au PATH le script est disponible en téléchargement ICI.

Pour information, le contenu du script est le suivant :

#!/usr/bin/env bash
PARAM="$*"

## Add the yarn commands
YARN_COMMANDS=" access add autoclean bin cache check config create exec generate-lock-entry generateLockEntry global help import info init install licenses link list login logout node outdated owner pack publish remove run tag team unlink upgrade upgrade-interactive upgradeInteractive version versions why workspace workspaces "

is_yarn_command() {
    isCommand=`echo "$YARN_COMMANDS" | grep " $1 "`

    if [ "$isCommand" == "" ]; then
        echo "false"
    else
        echo "true"
    fi
}

isYarnCommand=`is_yarn_command $1`

if [ "$isYarnCommand" == "true" ]; then
    yarn $*
else
    for param in $PARAM
    do
        yarn run $param
    done
fi