Mise à jour du 12 avril 2012: Pull Request ajoutant un un mappage aux rapports d’erreur CoffeeScript

Il est probable que, si vous codez en CoffeeScript, vous vous retrouvez souvent face à une exception JavaScript qui vous signale qu’un problème est survenu sur une ligne spécifique. Le problème est que le numéro de ligne en question est celui du code JavaScript généré, pas votre numéro de ligne en CoffeeScript. Pire encore, si vous générez votre code JavaScript de manière transparente, vous n’aurez aucun fichier JavaScript à examiner et le processus de recherche de l’endroit où cette erreur s’est produite est encore plus frustrant.

Eh bien, il semble que la future version de JavaScript pourrait venir à la rescousse, mais pas avant quelques mois. En attendant, voici petit script Bash qui pourrait vous faire gagner du temps.

Nous appellerons notre script coffeep, une version améliorée decoffee -p et son but est d’afficher sur la console le code JavaScript traduit à partir de votre fichier CoffeeScript avec la ligne numérotée. Pour le rendre encore plus utile, le script peut prendre un ou deux arguments supplémentaires après le chemin du fichier de café pour limiter les lignes imprimées à la seule section que vous souhaitez déboguer.

Par exemple, coffeep myfile.coffee génère le code JavaScript généré, comme le feraitcoffee -p myfile.coffee, mais avec chaque ligne précédée du numéro de ligne correspondant. L’appel de coffeep myfile.coffee 20 affichera la ligne 20, ainsi que les 5 lignes précédentes et les 5 lignes suivantes. Appeler coffeep myfile.coffee 20 30 affichera la ligne 20 à 30.

Ce n’est certainement pas sorcier, mais pourra faire partie de votre couteau suisse de développeur CoffeeScript. En tirant parti de cat -n, qui préfixe chaque ligne passée par stdin avec son numéro de ligne commençant à 1, notre première version de coffeep ressemble à ceci:

Si vous n’êtes pas familier avec les scripts bash, $1 représente le premier argument passé àcoffeep, qui dans notre cas est notre fichier café.

Nous allons maintenant ajouter deux utilisations possibles. Si un argument est fourni après le chemin, il est interprété comme le numéro de ligne JavaScript que vous souhaitez déboguer et nous générerons les 5 lignes précédente et suivante. Si deux arguments sont fournis après le chemin, ils sont interprétés comme la première ligne et la dernière ligne à afficher.

Avec un peu d’arithmétique, nous utilisons les commandes head ettail pour limiter d’abord la sortie à head_count les premières lignes avechead, et enfin limiter la sortie à tail_count les dernières lignes avectail.

Enfin, pour vous simplifier la vie, il suffit de copier / coller le code suivant dans votre terminal pour créer un fichier exécutable nommé “coffeep” dans “/usr/local/bin” (accessible à partir de votre $PATH, assurez-vous de disposer des droits néssaire pour modifier ce répertoire):