Retour au blog

Configurer son environnement de développement avec les dotfiles

Les développeurs et développeuses travaillent aujourd’hui majoritairement sur des systèmes UNIX, que ce soit macOS, Linux ou d’autres moins répandus.

L’une des particularités de ces systèmes est la possibilité d’utiliser la technique des dotfiles ayant pour objectif de créer des fichiers cachés. Le principe est simple : tous les fichiers dont le nom est préfixé par un point ne sont pas affichés par le système (hors instructions contraires). Les dotfiles sont notamment utilisés pour les fichiers de configuration.

Les dotfiles pour paramétrer un environnement

Souvent situés à la racine du répertoire personnel, ou dans un répertoire de travail, les dotfiles permettent de paramétrer un environnement. Vous avez très probablement déjà rencontré certains de ces fichiers de configuration. Par exemple :

  • le fameux .profile qui configure le shell
  • .aliases souvent utilisé pour rassembler les raccourcis de commandes

Et d’autres plus spécifiques à des outils comme :

  • .vimrc pour l’éditeur de texte vim
  • le très utilisé .gitignore
  • le répertoire .git (oui, le répertoire .git est un fichier caché car sous UNIX, tout est fichier).

La portabilité des configurations

Le fait que ces configurations se présentent sous la forme de fichiers offre un avantage particulièrement intéressant : la portabilité. En effet, il est très simple de déplacer un fichier, et donc une configuration. Cette portabilité présente de nombreux bénéfices que nous allons détailler dans la suite de cet article.

La sauvegarde

Sauvegarder une configuration peut s’avérer utile dans plusieurs cas. On peut en avoir besoin pour restaurer son environnement de travail après le crash d’une machine ou l’acquisition de nouveau matériel.

Puisque ce sont des fichiers source, il est tout à fait possible de les versionner avec GIT, SVN ou n’importe quel autre outil. Ce versionnage nous permet de jouer avec la configuration des logiciels en toute sérénité, sachant que l’on peut revenir à un état de configuration antérieurement sauvegardé.

Le partage entre environnements

Lorsque l’on développe, on prend vite tout un tas de petites habitudes. Il est agréable de les retrouver où que l’on soit. Cela peut être le cas pour un développement en télétravail ou l'utilisation de différentes machines (serveurs …).

En centralisant ces fichiers en ligne via Github ou Gitlab, il devient très facile de synchroniser ces configurations. Une simple commande git pull permet de récupérer plusieurs ajustements déjà mis en place ailleurs.

Attention tout de même à ne pas stocker de données sensibles si vous enregistrez votre configuration en ligne (par exemple : des mots de passe ou des clés d’accès dans vos fichiers).

Le partage avec les autres

Au-delà de la simple synchronisation entre environnements, le partage sur un outil comme Github va permettre de rendre visible des dotfiles au reste du monde. Ceci a, une fois encore, beaucoup d’avantages.

Profiter des dotefiles mis à disposition par la communauté

D’une part, cela permet de profiter de la force de l’Open Source et d’avoir à disposition un panel très large de dotfiles mis à disposition par la communauté. Ceux-ci permettent de s’inspirer pour créer ses propres configurations. Certaines d’entre elles cumulant plusieurs milliers d’étoiles sur leur dépôt.

Partager sa configuration aux membres de son équipe

D’autre part, le partage peut également être fait entre les membres d’une même équipe. Cela permet, par exemple, d’avoir une configuration de référence qui peut être installée sur chaque machine.

On peut notamment utiliser ce process pour faciliter l’arrivée d’une nouvelle personne dans l’équipe ou pour que tout le monde ait des règles communes dans le fichier .gitignore global (une problématique qui vous parle peut-être).

Vous l’aurez compris, s’intéresser aux fichiers dotfile n’est pas uniquement réservé aux personnes qui veulent connaître les rouages les plus fins de l’administration de système. Cela peut, au contraire, vous permettre d'optimiser votre/vos environnement(s) de développement afin de gagner en productivité.