Scripts
Comment ?
La section scripts
du fichier package.json
permet tout simplement de définir des tâches utilisées par les développeurs ou pour l'automatisation (intégration continue etc...).
Il suffit ensuite d'exécuter yarn en lui indiquant le script à exécuter :
et on obtient le résultat suivant :
Pourquoi ?
Centraliser et uniformiser
La section scripts
est utilisée comme point d'entrée commun pour toute l'équipe et les outils d'automatisation afin d'uniformiser les commandes utilisées et de centraliser l'information.
Utiliser les dépendances locales
En lançant la commande yarn start
, Yarn va d'abord rechercher la commande webpack-dev-server
dans le dossier node_modules
local (plus exactement, le dossier node_modules/.bin
) avant d'utiliser les commandes globalement installées sur la machine.
Le but est d'éviter les dépendances globales et donc l'hétérogénéité des versions.
Les développeurs et outils d'automatisation n'ont donc besoin que de deux prérequis : NodeJS et Yarn.
Automatiser
Avant et après l'exécution de yarn install
, Yarn lance respectivement les scripts preinstall
et postinstall
qui permettent donc d'enrichir la phase d'installation afin d'installer par exemple les dépendances d'autres langages et frameworks.
Si vous déployez votre application sur Heroku https://www.heroku.com/, Heroku détecte la présence du fichier package.json
, lance la commande yarn install
puis la commande yarn heroku-postbuild
qui vous permet de personnaliser le build de votre application.
yarn run vs npm run
Pour exécuter une commande avec yarn et lui passer des options, il n'y a pas de surprise :
Cela exécute donc la commande cowsay 👋 -s
.
En revanche, avec NPM, il faut lancer la commande run
et malheureusement c'est NPM qui consomme les options et dans ce cas particulier, NPM interprète l'option -s
qui dans son cas veut dire --silent
.
Pour passer des options, voici la syntaxe à utiliser :
Donc pour résumer :
yarn hello -s
<=> npm run hello -- -s
A vous de choisir.
Pour remédier à certains de ces problèmes et apporter de nouvelles fonctionnalités, l'équipe NPM a produit une nouvelle commande npx
que l'on vous recommande d'éviter principalement pour des raisons de sécurité.
Le danger de cette commande est qu'elle installe automatiquement le module que vous lui passez en paramètre et l'exécute immédiatement.
Une typo et vous êtes cuits si vous tombez sur module malveillant.
Exemple :
Fiouf ! Nous venons d'installer inconsciemment le module run (https://yarnpkg.com/en/package/run) qui a ensuite essayer d'exécuter un fichier hello de notre projet. 😱
StackOverflow + Social Engineering = Remote Code Execution
Dernière mise à jour