Edit 4
Correction d'un bug avec le -dev et -uat (qui n'était pas interprété comme un mode prod).
Edit 3
J'ai ajouté le mode "mock" quand vous avec une conf browser-sync que vous souhaitez activer et qui mock votre serveur. Nous avons donc -m
, -mock
, --mock
, toujours afin de convenir au plus grand nombre.
Edit 2
J'ai ajouté plusieurs options pour le mode production. Nous avons à présent -p
, -prod
, --prod
, afin de convenir au plus grand nombre.
Edit
J'ai eu besoin de modifier le script pour qu'il prenne en compte l'option "-prod" afin de distinguer la production de bundle en mode DEV et en mode PROD.
Mon besoin
Pouvoir taper quelque chose comme : yarn install clean build run
Ma solution
Créer un petit script baptiser yr (parce que yarn c'est trop long à taper et que je suis fainéante) qui permette d’enchaîner les commandes yarn/npm sans effort tout en gérant le cas des commandes customs créées via l'attribut "scripts" du fichier package.json.
Le script :
#!/usr/bin/env bash
PARAMS="$*"
## Sanitize PARAMS with transformation
PARAMS=`echo "$PARAMS" |
sed "s/ -m / -mock /" |
sed "s/ -m$/ -mock/" |
sed "s/ --mock / -mock /" |
sed "s/ --mock$/ -mock/" |
sed "s/ -u / -uat /" |
sed "s/ -u$/ -uat/" |
sed "s/ --uat / -uat /" |
sed "s/ --uat$/ -uat/" |
sed "s/ -p / -prod /" |
sed "s/ -p$/ -prod/" |
sed "s/ --prod / -prod /" |
sed "s/ --prod$/ -prod/" `
## 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 "
detect_run_mode() {
runMode=""
match=`echo "$PARAMS" | grep -e " -prod"`
if [ "$runMode" == "" ] && [ "$match" != "" ]; then
runMode="-prod"
fi
match=`echo "$PARAMS" | grep -e " -uat"`
if [ "$runMode" == "" ] && [ "$match" != "" ]; then
runMode="-prod" # UAT = PROD
fi
match=`echo "$PARAMS" | grep -e " -mock"`
if [ "$runMode" == "" ] && [ "$match" != "" ]; then
runMode="-mock"
fi
echo "$runMode"
}
is_yarn_command() {
isCommand=`echo "$YARN_COMMANDS" | grep " $1 "`
if [ "$isCommand" == "" ]; then
echo "false"
else
echo "true"
fi
}
isYarnCommand=`is_yarn_command $1`
runMode=`detect_run_mode`
if [ "$isYarnCommand" == "true" ]; then
yarn $*
else
for param in $PARAMS; do
if [ "$param" != "$runMode" ]; then
yarn run $param $runMode
fi
done
fi
Comment s'en servir ?
Pour exécuter une commande basique du genre yarn add
ou encore yarn install
il faut taper :
yr add
# ou
yr install
Pour exécuter une commande custom dont l'invocation est yarn run my_custom_command
il faudra taper :
yr my_custom_command
En résumé : une syntaxe pour les contrôler toutes !