CM5 - TOOLING
ou comment bien setup un VRAI projet web !
Pourquoi on est là ?
Pourquoi on est là ?
🧰 Vous montrer l'outillage d'un projet web
🏅Les bonnes pratiques
👨🏼🦳Vous faire un retour d'expérience
❓Répondre à TOUTES vos questions
Qui on est ?
Qui on est ?
Mickaël Alves
Etienne Idoux
Qui on est ?
Mickaël Alves
Etienne Idoux
Qui on est ?
Mickaël Alves
Etienne Idoux
Qui on est ?
Mickaël Alves
Etienne Idoux
(Anciennement)
(Actuellement)
Vous devez de toute urgence nous aider à mettre notre application en production ! Le code est déjà fait, mais j'ai peur qu'il ne soit pas très propre !
Allons faire un petit tour sur le projet...
Demo 👨🏼💻
👏🏼 Utilisation de Git !
Les bases de Git !
Premier problème...
Premier problème...
Mauvaise utilisation de Git !
Mauvaise utilisation de Git !
- Des noms commits inadaptés
- Des fichiers qui ne devraient pas être là ❗
- Aucune merge request / pull request
Mauvaise utilisation de Git !
- Des noms commits inadaptés
- Des fichiers qui ne devraient pas être là ❗
- Aucune merge request / pull request
Besoin d'un petit nettoyage 🧹
Conventional Commits !
Conventional CommitsSemantic Commit Messages !
Semantic Commit MessagesDemo 👨🏼💻
Pourquoi utiliser GitLab / Github ... !
...
Pourquoi utiliser GitLab / Github ... !
- Interface de visualisation de projets Git
- Utilisation des merge requests / pull requests
- Gestion de projets avec les issues et boards
- Continuous Integration / Delivery (CI/CD)
- Exécution automatique de tests, du packaging, du déploiement, etc.
- Déploiement sur GitLab / Github Pages
- Espace de documentation (Wiki...)
Comment améliorer notre code ?
Environnement de travail !
Integrated Development Environment (IDE) !
Integrated Development Environment (IDE) !
Integrated Development Environment (IDE) !
📦 Node Package Manager (NPM)...
📦 Node Package Manager (NPM)...
- Gestionnaire de packages
📦 Node Package Manager (NPM)...
- Gestionnaire de packages
- Installation de dépendances
📦 Node Package Manager (NPM)...
- Gestionnaire de packages
- Installation de dépendances
- Scripts personnalisés
📦 Node Package Manager (NPM)...
- Gestionnaire de packages
- Installation de dépendances
- Scripts personnalisés
Alternative à npm...
Demo 👨🏼💻
👮 Linters...
- Détection des erreurs de syntaxe dans le code
👮 Linters...
- Détection des erreurs de syntaxe dans le code
- Des règles pour le projet entier
👮 Linters...
- Détection des erreurs de syntaxe dans le code
- Des règles pour le projet entier
- Améliorer la qualité du code
👮 Linters...
- Détection des erreurs de syntaxe dans le code
- Des règles pour le projet entier
- Améliorer la qualité du code
https://stylelint.io/
Demo 👨🏼💻
🧹 Formatters...
🧹 Formatters...
- Réorganiser le code pour le rendre plus lisible et plus consistant
🧹 Formatters...
- Réorganiser le code pour le rendre plus lisible et plus consistant
- Gagner du temps sur le formattage
🧹 Formatters...
- Réorganiser le code pour le rendre plus lisible et plus consistant
- Gagner du temps sur le formattage
- Produire du code uniforme et cohérent
🧹 Formatters...
- Réorganiser le code pour le rendre plus lisible et plus consistant
- Gagner du temps sur le formattage
- Produire du code uniforme et cohérent
https://biomejs.dev/
Demo 👨🏼💻
Autres outils et astuces...
Typescript...
Typescript...
ℹ️ Langage de programmation qui a pour but d'améliorer et de sécuriser la production de code JavaScript.
https://www.typescriptlang.org/const Name: string = "Toto" // ✅
const Age: number = 12 // ✅
const Surname: string = false // ❌
const YearOfBirth: number = "1998" // ❌
JsDoc...
JsDoc...
ℹ️ Langage de balisage utilisé pour documenter du code source JavaScript.
https://jsdoc.app/JsDoc...
Javascript/**
* Function to add a book to the list.
*
* @constructor
*
* @param {string} title - The title of the book.
* @param {string} author - The author of the book.
*/
function addBook(title, author) {
blablabla...
}
JsDoc...
bash# Commande de génération de la documentation 📖
jsdoc book.js
Les extensions d'IDE...
Les extensions d'IDE .
Live Server
Serveur web minimaliste avec un système de HMR
https://ritwickdey.github.io/vscode-live-server/
Les extensions d'IDE .
HTML CSS Support
Extension VSCode qui permet la complétion des attributs dans le code
https://github.com/ecmel/vscode-html-css
Les extensions d'IDE .
IntelliSense
Fonction d'édition de code, utilisée pour la complétion de code, les informations sur les paramètres... Vous pouvez trouver les extensions pour vos langages préférés !
https://code.visualstudio.com/docs/editor/intellisense
Et l'IA dans tout ça ?
⚠️ A utiliser à bon escient...
⚠️ A utiliser à bon escient...
- Gain de productivité...
⚠️ A utiliser à bon escient...
- Gain de productivité...
- Mais il faut savoir évaluer les réponses !
⚠️ A utiliser à bon escient...
- Gain de productivité...
- Mais il faut savoir évaluer les réponses !
- Une IA ne remplacera jamais une bonne doc 📚
ChatGPT...
ChatGPT...
ℹ️ Le pionnier des LLM, pratique et gratuit mais se trompe souvent sur des problèmes un peu complexe.
https://chat.openai.com/Github Copilot...
Github Copilot...
ℹ️ Une extension à vos IDE entraînés sur les données de github. Très pratique pour de l'auto-complétion.
https://github.com/features/copilotParlons CI/CD !
Continuous Integration (CI)...
Continuous Integration (CI)...
- Détecter rapidement les erreurs
Continuous Integration (CI)...
- Détecter rapidement les erreurs
- Automatiser les bonnes pratiques
Continuous Integration (CI)...
- Détecter rapidement les erreurs
- Automatiser les bonnes pratiques
- Fusionner régulièrement le code pour s'assurer de sa qualité !
Continuous Integration (CI)...
- Détecter rapidement les erreurs
- Automatiser les bonnes pratiques
- Fusionner régulièrement le code pour s'assurer de sa qualité !
Lint Staged
Gitlab CI/CD
Demo 👨🏼💻
Continuous Delivery (CD)...
Continuous Delivery (CD)...
- Automatiser le deploiement de l'application
Continuous Delivery (CD)...
- Automatiser le deploiement de l'application
- Livrer rapidement et avec sérénité 🧘
Continuous Delivery (CD)...
- Automatiser le deploiement de l'application
- Livrer rapidement et avec sérénité 🧘
- Mettre en place des tests automatisés
Continuous Delivery (CD)...
- Automatiser le deploiement de l'application
- Livrer rapidement et avec sérénité 🧘
- Mettre en place des tests automatisés
Notre app est super belle ! Et maintenant ?
Les bundlers !
Les bundlers !
- Beaucoup de fichiers (html, css, js, images, ...)
Les bundlers !
- Beaucoup de fichiers (html, css, js, images, ...)
- Il faut réduire le poids de nos applications !
Les bundlers !
- Beaucoup de fichiers (html, css, js, images, ...)
- Il faut réduire le poids de nos applications !
- On compresse tout grâce aux bundlers 💪
Les bundlers !
- Beaucoup de fichiers (html, css, js, images, ...)
- Il faut réduire le poids de nos applications !
- On compresse tout grâce aux bundlers 💪
Les bundlers !
- Beaucoup de fichiers (html, css, js, images, ...)
- Il faut réduire le poids de nos applications !
- On compresse tout grâce aux bundlers 💪
Les bundlers !
- Beaucoup de fichiers (html, css, js, images, ...)
- Il faut réduire le poids de nos applications !
- On compresse tout grâce aux bundlers 💪
Les bundlers !
Comment mettre le code sur internet ?
Comment mettre le code sur internet ?
ℹ️ Permet d'héberger votre app en quelques clics. Propose aussi des métriques.
https://vercel.comComment mettre le code sur internet ?
ℹ️ Gérer votre propre serveur et les sites que vous mettez en ligne.
https://www.nginx.com/Comment mettre le code sur internet ?
- OVH - https://www.ovhcloud.com
- Clevercloud - https://www.clever-cloud.com
- Netlify - https://www.netlify.com/
- Heroku - https://www.heroku.com/
- Github - https://pages.github.com/
Gestion des versions - Semantic Versioning
https://semver.org/Comment surveiller tout ça ?
Grafana...
Grafana...
ℹ️ Permet de surveiller et analyser les données de votre application avec des graphes.
https://grafana.com/Grafana...
New Relic...
New Relic...
ℹ️ Observe vos applications et vos machines et propose beaucoup de fonctionnalités.
https://newrelic.comNew Relic...
Tests de performance...
Tests de performance...
ℹ️ Fournir des insights pour optimiser les perfs et garantir une expérience utilisateur optimale
https://www.datadoghq.com/Tests de performance...
ℹ️ Evaluer les performances des applications web en simulant un grand nombre d'utilisateurs concurrents.
https://jmeter.apache.org/Restons informé !
Restons informé !
📬 Par mail
Restons informé !
💬 Par slack
En conclusion
En conclusion
Pourquoi on fait tout ça ?
Linter, Format, Nommage, pourquoi ?
- Améliorer la qualité du code
- Améliorer la consistance et lisibilité du code
- Plus simple à relire
- Plus simple à maintenir
- Automatiser pour gagner en efficacité
Linter, Format, Nommage, pourquoi ?
- Améliorer la qualité du code
- Améliorer la consistance et lisibilité du code
- Plus simple à relire
- Plus simple à maintenir
- Automatiser pour gagner en efficacité
❗On choisit puis on s'y tient ❗
CI/CD, Alerting, Monitoring, pourquoi ?
- Automatiser pour gagner en efficacité
- Permettre la détection précoce des erreurs
- Livrer en continu et de manière itérative
- Surveillance et dépannage des applications
CI/CD, Alerting, Monitoring, pourquoi ?
- Automatiser pour gagner en efficacité
- Permettre la détection précoce des erreurs
- Livrer en continu et de manière itérative
- Surveillance et dépannage des applications
💸 Une petite erreur peut coûter cher...
Merci !
Mickaël Alves
Etienne Idoux