Comment faire un bon README.md
Les README.md sont des fichiers qui servent principalement à expliquer comment un développeur peut exécuter une application et sa suite de tests. Aujourd’hui j’aimerais qu’on se penche sur ce qu’est un bon README.md et quels sont les pièges à éviter.
Note : Je parle ici dans un contexte professionnel en entreprise. Les fichiers markdown pour les projets open source doivent contenir de l’information différente qui n’est pas traitée ici.
Une entête basique qui décrit le projet
Bon. Je commence soft. Évidemment, vous allez mettre le titre du projet avec une description brève de sa mission au sein de l’entreprise. L’important, c’est de ne pas de surdocumenter. De l’information qui risque de changer, comme des règles fonctionnelles ou des diagrammes d’architecture, n’a pas sa place ici.
Voici un exemple :
1 2 3 4 5 |
# todo-frontend Ce dépôt contient le _frontend_ de l'application todo qui permet de garder une liste de tâches à faire. ## Démarrage rapide Ces instructions vont vous permettre d'obtenir une copie fonctionnelle du projet sur votre poste de travail. |
Résumez en un paragraphe.
Les prérequis
Ici, vous allez lister les dépendances du projet. On peut penser à des librairies ou des pilotes (drivers) par exemple.
D’abord, réservez une section pour lister ces dépendances. Puis, à la suite, dans le même ordre, ajoutez les procédures d’installation. Sans nécessairement entrer dans les détails, simplement écrire sous forme de liste à puces comment l’installer, comme par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
## Prérequis Afin de pouvoir exécuter l'application sur votre poste, vous devez d'aborder installer les dépendances suivantes : * NodeJS * Angular cli * nginx ### Installation #### Node 1. Télécharger la version LTS de NodeJS [ici](https://nodejs.org/fr/download/) 2. Suivre les étapes d'installation en laissant les options par défaut. ### Angular cli 1. Après avoir installé NodeJS, ouvrir une invite de commande 2. Taper `npm install -g @angular/cli` ### nginx 1. Suivre [cette procédure](nginx-install.md). |
Comment exécuter et ouvrir l’application
En théorie, le développeur qui essaie de monter son environnement à partir de notre README.md devrait avoir une copie du code sur son poste et toutes les dépendances installées. Ici, on veut qu’il puisse démarrer l’application et tester que tout est ok.
C’est aussi dans cette section que vous voulez indiquer au développeur s’il doit modifier des variables d’environnement, des fichiers de configuration, des clés d’API privées, etc.. Voici un exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
## Exécution Suivre [cette procédure](nginx-install.md) pour configurer une instance de nginx locale. Vérifier que nginx s'exécute avant de poursuivre. 1. Ouvrir une invite de commande à la racine du projet 2. S'assurer d'avoir les dépendance npm installées `npm install` Si le backend est exécuté en local : 3. Exécuter `npm run start` Si le backend de l'environnent de staging : 3. Exécuter `npm run start:staging` Puis : 4. Ouvrir un navigateur à l'adresse [http://localhost/login](http://localhost/login) |
Comment exécuter les tests
J’ose espérer que votre branche master est propre et que tous les tests roulent 😛 Donc, une fois que l’environnement est prêt pour développer, le programmeur doit savoir comment exécuter les tests pour valider que ses changements ne causent aucune régression.
Si vous avez plusieurs niveaux de tests (unitaires, fonctionnels, bout-en-bout ou e2e, etc.), vous devez y allez dans l’ordre logique et cet ordre dépend du contexte de votre projet. Dans mon exemple, on pourrait vouloir expliquer comment exécuter les tests unitaires en premier, puis les tests bout-bout, comme par exemple :
1 2 3 4 5 6 7 8 |
## Tests ### Tests unitaires 1. S'assurer d'avoir toutes les dépendances avec `npm install` 2. Exécuter `npm run test:unit` ### Tests bout-en-bout 1. S'assurer d'avoir toutes les dépendances avec `npm install` 2. Exécuter `npm run test:e2e` |
Bien sûr, tout dépendant de votre projet, les procédures peuvent être plus compliquées 😛
Comment déployer/graduer
Toujours dans l’optique de rendre un développeur autonome rapidement, une section contenant une procédure pour déployer son code dans un environnement de tests peut être très pratique, quoique je la considère optionnelle :
1 2 3 4 5 |
## Déploiement en staging 1. Depuis la branche master, exécuter : `npm run build` 2. Créer une archive .zip avec le contenu du répertoire `dist` 3. Envoyer le .zip à Roger par courriel (roger@compagnie.ca) 4. Attendre que Roger déploie |
Dans le cas où une branche serait connectée à un pipeline de déploiement en continu, il peut être pratique de le mentionner au lieu d’inscrire une procédure :
1 2 |
## Déploiement en staging Un _pipeline_ de déploiement en continu est actif sur la branche master. Une fois qu'une _pull request_ est approuvée, le code sera automatiquement déployé et les usagers avertis du déploiement par courriel. |
Conclusion
Aujourd’hui, on a vu ce que devrait contenir un bon README.md dans un projet. Gardez en tête que, peu importe son niveau, un développeur devrait être en mesure de cloner votre dépôt, lire le README.md et être prêt à coder. Si vous trouvez que cet article est intéressant, n’hésitez pas à le partager avec vos collègues. Je ne pense pas détenir la vérité absolue, mais si cet article peut être un point de départ pour une discussion entre collègue et arriver avec vos propres README.md encore mieux, ce sera mission accomplie!
Cheers!
Commentaires
Laisser un commentaire