Ecrire un script de build dans le style de votre choix (synchrone, asynchrone, promise, async/await)
- Installer les dépendances :
npm install
- Pour démarrer le serveur de dev :
npm run serve:dev
- Pour builder :
npm run build
- Pour démarrer le serveur de prod (fichiers buildés) :
npm run serve:prod
Utiliser npm audit
pour connaître les dépendances directes ou indirectes dont une version contient une faille de sécurité connue.
Utiliser npm outdated
pour connaître les dépendances ayant besoin d'être mises à jour parmi nos dépendances directes : del
, fs-extra
, http-server
, md5
uglify-es
.
Mettre à jour vers la version WANTED
en utilisant npm update
.
Supprimer la bibliothèque del
avec la commande npm rm
, pour afficher l'aide npm rm --help
. Supprimer ensuite le require
de del
dans le fichier build.js
Supprimer la bibliothèque fs-extra
avec la commande npm rm
, remplacer ensuite le require
de fs-extra
par require('fs/promises')
Remplacer uglify-es
par terser
(attention à l'installer dans les devDependencies
. Remplacer le require
de uglify-es
par const { minify } = require("terser");
Migrer les dépendances restantes via npm install
.
Migrer le package-lock.json
en yarn.lock
avec yarn import
Utiliser yarn audit
pour connaître les dépendances directes ou indirectes dont une version contient une faille de sécurité connue.
Utiliser yarn outdated
pour connaître les dépendances ayant besoin d'être mises à jour parmi nos dépendances directes : del
, fs-extra
, http-server
, md5
uglify-es
.
Mettre à jour vers la version WANTED
en utilisant yarn upgrade
ou yarn upgrade-interactive
.
Supprimer la bibliothèque del
avec la commande yarn remove
, pour afficher l'aide npm rm --help
. Supprimer ensuite le require
de del
dans le fichier build.js
Supprimer la bibliothèque fs-extra
avec la commande yarn remove
, remplacer ensuite le require
de fs-extra
par require('fs/promises')
Remplacer uglify-es
par terser
(attention à l'installer dans les devDependencies
. Remplacer le require
de uglify-es
par const { minify } = require("terser");
Migrer les dépendances restantes via yarn add [package]
.
Vous pouvez utiliser la méthode rm
de fs/promises
avec les options force
et recursive
(pas besoin de tester qu'il existe, rm
ne génèrant pas d'erreur lorsque le dossier/fichier n'existe pas)
Vous pouvez utiliser la méthode mkdir
de fs/promises
Copier le contenu des fichiers src/js/horloge.js
et src/js/index.js
dans un fichier dist/app.js
, dans cet ordre.
Copier le fichier src/index.html
dans dist/index.html
en remplaçant les balises script de dev par celle de prod (app.js
).
Indication : readFile retourne un type Buffer
, pour le convertir en string
: buffer.toString()
Utiliser la bibliothèque terser
pour réduire le poids du fichier js de prod : https://www.npmjs.com/package/terser#api-reference
Utiliser le module md5 pour signer le fichier app.js
et remplacer son nom par le checksum md5 (pour invalider le cache), exemple : app.5da8aa7126701c9840f99f8e9fa54976.js
Installer et utiliser yargs
ou minimist
pour qu'on puisse lancer la commande avec les options suivantes :
--minify
pour minifier le JS ou non--hash
pour ajouter le checksum dans le nom du fichier ou non
Exemple : node build --minify --hash