DEV Community

Cover image for SliDesk : Une introduction par Bun
Sylvain Gougouzian
Sylvain Gougouzian

Posted on • Edited on

SliDesk : Une introduction par Bun

Faire des talks dans des conférences, c'est cool !
Avoir un bon outil pour cela, c'est encore mieux.

Mes premiers talks datent de 2015 et ils étaient rédigés sur https://slides.com .

Suite à une conférence d'@hsablonniere fin 2016 sur la Documentation As Code, j'ai découvert asciidoc et son environnement avec asciidoctor.

Ayant vu que Slides.com utilisait aussi RevealJS j'étais en terrain connu donc avec asciidoctor-revealjs.

Pendant quelques temps, j'ai abandonné les talks, les entreprises dans lesquelles je travaillais n'étaient pas dans les cibles visées par les conférences qui m'attiraient.

Mon arrivée chez @zenikait a changé la donne. L'ADN de cette ESN est de participer aux conférences et d'en sponsoriser certaines, elle permet également à ses collaborateurs de participer autant côté speaker qu'attendee.

Ainsi, j'ai commencé mes premiers talks et donc me remettre à "asciidoctor-revealjs".

Aussi, j'aime avoir des outils efficients, qui suffisent à mon besoin.

J'aime coder mes outils pour découvrir l'envers des choses, voir les problématiques que les concepteurs d'autres projets du même type ont eu et comment les résoudre.

SliDesk est né de cette idée là.

Après un premier passage sous node.js avec lequel je m'amuse depuis de nombreuses années, je me suis dit pourquoi ne pas tenter l'aventure avec le nouveau challenger https://bun.sh !

Bun : kézako ?!?

Bun se veut être une boîte à outils et un environnement d'exécution bien plus rapide que Node.js ou Deno.

Il est codé en Zig (https://ziglang.org).

Son installation est très simple :

curl -fsSL https://bun.sh/install | bash
Enter fullscreen mode Exit fullscreen mode

Une fois installé, vous aurez accès au runtime et au sdk automatiquement.

Un des premiers points qui m'a séduit dans Bun, c'est la non-existence des node_modules lorsque l'on souhaite juste lancer un projet JS avec des dépendances. A l'image de pnpm, les bibliothèques sont stockées à un unique endroit, soulageant ainsi nos espaces de stockages.

Dès qu'il trouvera une bibliothèque qu'il ne connait pas lors de la lecture du code source, Bun la télécharge et l'installe dans son dépôt interne. Il se base sur le site https://npmjs.com pour trouver les bibliothèques versionnées.

Il fonctionne comme les autres runtimes avec des packages globaux ou locaux par projets.

A l'instar de Node.js, il est possible de créer des binaires qui peuvent être exécuté dans un terminal.

Pour cela, il faut mettre dans le fichier package.json :

{
  "bin": {
    "slidesk": "./bin/index.js"
  }
}
Enter fullscreen mode Exit fullscreen mode

et dans le fichier ./bin/index.js, il faut commencer par :

#!/usr/bin/env bun
Enter fullscreen mode Exit fullscreen mode

La commande bun link

Un des gros avantages avec Bun quand on code un outil comme SliDesk, c'est la commande bun link.

Petite explication par l'exemple.

Créons un répertoire monprogramme et déplaçons-nous dedans.

Créons un fichier package.json :

{
  "name": "monprogramme",
  "bin": {
    "monprogramme": "./bin/index.js"
  }
}
Enter fullscreen mode Exit fullscreen mode

Cette instruction a pour objectif de signaler à Bun que lorsqu'on veut utiliser "monprogramme", au lieu de chercher dans le registre npmjs.com, il prendra celui-ci.

Ainsi, après une utilisation de bun link dans le répertoire où le fichier package.json cité précédemment est créé, elle nous répondra :

bun link v0.7.3 (a9b3d583)
Success! Registered "monprogramme"

To use monprogramme in a project, run:
  bun link monprogramme

Or add it in dependencies in your package.json file:
  "monprogramme": "link:monprogramme"
Enter fullscreen mode Exit fullscreen mode

Créons un "exécutable"

Toujours dans le répertoire monprogramme, nous allons créer un fichier bin/index.js pour correspondre aux données saisies dans le fichier package.json précédemment instancié.

Dans ce fichier, nous allons donc préciser qu'il s'agit d'un exécutable Bun et il va afficher la version de Bun.

#!/usr/bin/env bun

console.log(`Bun version: ${Bun.version}`);
Enter fullscreen mode Exit fullscreen mode

Pour le tester on peut faire un bun bin/index.js qui nous affichera : Bun version: 0.7.3.

Puis je le "link" avec bun link.

Testons cet "exécutable"

Dans un autre répertoire, lançons la commande bun link monprogramme. La commande me renvoie :

bun link v0.7.3 (a9b3d583)

 installed monprogramme@link:monprogramme with binaries:
  - monprogramme


 1 packages installed [3.00ms]
Enter fullscreen mode Exit fullscreen mode

Si on regarde dans le répertoire, aucun fichier n'est présent. Le package a été installé dans le répertoire de cache de Bun.

Maintenant testons la commande bunx monprogramme, elle retourne bien le texte Bun version: 0.7.3. bunx est un alias de bun x automatiquement activé lors de l'installation de Bun.

Et voilà la fin de l'introduction à Bun. Dans le prochain article nous verrons comment manipuler les répertoires et fichiers avec Bun.

Top comments (1)

Collapse
 
aurelievache profile image
Aurélie Vache

Bien joué pour ton premier article :)