Table des matières
CoffeeScript est un langage qui nous permet d'écrire un meilleur code JavaScript, ceci en l'unifiant et en l'encadrant sous la même structure, où nous serons sûrs que le code JavaScript créé par CoffeeScript par un autre développeur, il sera identique au nôtre.Mais ce n'est pas tout ce qu'il offre CoffeeScript, en plus il dispose d'un outil appelé Gâteau, similaire à Grunt qui nous permet de définir des tâches simples pour nous aider dans nos projets, car il est possible que nous ayons besoin d'une tâche pour exécuter des tests ou simplement d'une pour construire nos fichiers et nous pouvons faire tout cela avec Gâteau via un fichier appelé Cakefile.
ExigencesPour terminer ce tutoriel, nous devons avoir une installation fonctionnelle de CoffeeScript, nous avons également besoin d'autorisations pour écrire des fichiers et exécuter CoffeeScript sur l'ordinateur où nous faisons le tutoriel. Nous avons besoin d'un éditeur de texte comme Texte sublime pour pouvoir écrire le code de nos exemples et cela ne fait jamais de mal de jeter un œil aux précédents tutoriels du langage.
Avant de commencer, il est important de mentionner que nous n'avons pas besoin d'installer Gâteau, lors de notre installation initiale de CoffeeScript l'outil est installé de la même manière, nous n'avons donc rien à faire de plus pour commencer à travailler avec.
Sachant cela, nous pouvons commencer à travailler avec Gâteau, mais nous devons comprendre que toutes les tâches que nous créons doivent se trouver dans un fichier appelé Cakefile, qui doit avoir exactement le même nom puisque gâteau ce sera un fichier totalement différent et ne sera pas reconnu par le compilateur.
Ce fichier doit être à la racine de notre projet et il est extrêmement important que son contenu ne soit que du code CoffeeScript. Après avoir clarifié cela, voyons comment créer notre première tâche avec Gâteau.
Nous allons créer un dossier appelé cakefile_example et là, nous allons créer un fichier appelé Cakefile.coffee et il contiendra le contenu suivant :
tâche "salutation", "Disons bonjour à la grande communauté Solvetic", -> console.log "Hello, World!"Avant d'expliquer notre code nous allons le compiler et voir le contenu généré en JavaScript, ce n'est pas nécessaire puisque nous ne verrons jamais ce code, mais cette fois nous pourrions l'utiliser pour mieux comprendre ce qu'il fait CoffeeScript, voyons le résultat :
AGRANDIR
Puisque nous sommes dans le contexte, nous pouvons expliquer notre code, nous définissons d'abord la tâche avec la fonction tâche qui est automatiquement ajouté à chaque fichier Cakefile. Le premier argument de la fonction est le nom de la tâche, dans ce cas c'est salutation et nous l'utiliserons dans la console de commande pour exécuter la tâche, le deuxième argument peut être facultatif et est une description de la tâche qui apparaîtra dans la liste de nos tâches disponibles. Le dernier argument que nous envoyons dans la fonction tâche c'est une autre fonction qui sera exécutée par la tâche et c'est là que la majeure partie de notre logique sera déposée.L'exemple précédent était juste pour vérifier ce que faisait le compilateur, mais notre fichier Cakefile il ne doit pas avoir d'extension. Nous pouvons également voir quelles tâches nous avons à disposition avec la commande gâteau Dans la console de commande, voyons à quoi cela ressemble :
Comme nous pouvons le voir, nous pouvons voir le nom de notre tâche ainsi que la description. Maintenant, pour exécuter une tâche particulière, nous utilisons la commande cake suivie du nom de la tâche, pour finir, voyons le résultat de la console :
Nous savons déjà comment créer une tâche et l'exécuter, mais que se passe-t-il si nous voulons lui passer des arguments ? Par exemple, et si nous voulons que notre accueil soit totalement personnalisé en fonction d'une valeur que nous envoyons ? C'est assez facile à faire, voyons.
La première chose que nous devons faire dans notre tâche est de définir l'option, nous le faisons avec la fonction option disponible Gâteau. Cette fonction prend trois arguments, le premier est la forme courte de l'option, le second est la forme longue et le dernier est une description de ce que fait l'option, quelque chose d'important si nous développons en équipe et voulons documenter nos tâches. Nous allons ensuite faire les modifications sur notre tâche pour définir l'option :
option '-n', '--name [NAME]', 'nom à saluer' tâche "salutation", "Nous disons bonjour à quelqu'un", (options) -> message = "Bonjour", si options.name? message + = options.name else message + = "Monde" message console.logComme on le voit avant la définition de tâche nous avons notre fonction option, suivi de la forme courte qui serait -n, puis nous avons la forme longue qui serait -name spécifiant qu'elle attendra une valeur et enfin la description. Nous allons exécuter la commande cake et voir le résultat dans notre console :
Comme nous pouvons le voir, nous avons le nom de notre tâche, la description et en dessous nous avons les options disponibles pour elle, les options courtes et longues ainsi que la description. Exécutons notre tâche avec l'option courte et voyons le résultat de la console :
Pour exécuter une tâche avec des options, il est important que nous spécifiions d'abord les arguments puis le nom de la tâche car si nous ne rencontrons pas d'erreur, cela ne dit pas grand-chose sur ce qui peut se passer avec notre fichier Cakefile, alors voyons comment l'exécution utilise la deuxième option :
Ici, quelque chose de particulier se produit et c'est qu'avant d'exécuter la tâche, nous utilisons l'option avec un seul script, ce qui nous donne une erreur et c'est la bonne chose à faire puisque dans notre tâche, nous avons défini l'option comme --- nom au lieu de -nom, démontrant ainsi l'efficacité de CoffeeScript pour l'exécution des tâches.
De plus, nous pouvons définir si une option est requise et nous le faisons dans la définition de la tâche en vérifiant si la valeur existe et si nous ne lançons pas d'erreur, voyons à quoi ressemble ce code :
option '-n', '--name [NOM]', 'nom que vous voulez saluer' tâche "salutation", "Vérifier que l'option existe", (options) -> lancer une nouvelle erreur ("[NOM] est un valeur requise ") à moins que options.name? console.log "Bonjour, # {options.name}"Exécutons ensuite notre tâche mais cette fois en ignorant l'option comme argument et voyons la réponse de la console :
Comme nous pouvons le voir, l'erreur que nous avons incluse dans le fichier a été affichée, pouvant ainsi valider que les options de nos tâches sont passées en arguments lorsque cela est nécessaire.
Ayant déjà vu comment créer nos tâches et définir des options pour celles-ci, il est important de voir comment nous pouvons exécuter des tâches qui se trouvent chez les autres. Par exemple, nous pouvons avoir deux tâches en commun dans un projet où l'une des tâches est en charge du nettoyage des répertoires que nous avons construits pour le projet et l'autre est en charge de la compilation et de la construction, voyons comment ces deux tâches qui nous venons de finir de ressembler.
task "clean", "Cette tâche effectue le nettoyage des répertoires", -> console.log "cleaning the dir…" task "build", "Build et compile les fichiers pour le projet", -> console.log "bâtir…"Nous allons exécuter la commande gâteau et voyons la réponse via la console :
De plus, pour exécuter les deux tâches ensemble, nous pouvons utiliser la commande cake suivie des deux noms de nos tâches :
Comme nous pouvons le voir, il n'y a rien d'étrange dans nos tâches, mais si nous sommes des observateurs, nous réalisons que nous devons d'abord exécuter la tâche de nettoyage toujours avant notre tâche de construction, mais que se passe-t-il si nous voulons une troisième tâche appelée emballage, qui emballera ensuite le projet pour nous ? Nous devons donc d'abord le compiler, s'assurer que les répertoires sont propres et enfin compiler.
Le problème est que cette solution n'est pas optimale, si pour une raison quelconque nous oublions d'appeler la tâche propre ou pire, notre tâche de construction aura des problèmes avec notre troisième tâche, heureusement Cake nous permet d'appeler une tâche dans une autre avec la fonction invoquer, alors voyons à quoi ressemble notre fichier Cakefile avec la nouvelle tâche et les modifications :
task "clean", "Cette tâche effectue le nettoyage des répertoires", -> console.log "cleaning the dir…" task "build", "Build et compile les fichiers pour le projet", -> console.log "building … "task" pack "," clean, build and pack our project ", -> invoke" clean "invoke" build "console.log" packaging … "Il ne nous reste plus qu'à appeler notre package et ainsi nous assurer que les deux autres tâches requises sont appelées sans problème, voyons le résultat dans la console de commande :
Il est important de mentionner que les tâches qui utilisent la fonction invoquer ils sont exécutés de manière asynchrone, nous n'avons donc aucune garantie que la tâche de nettoyage sera exécutée avant la construction et l'empaquetage, nous devons donc être prudents dans leur utilisation.
Avec cela, nous concluons ce tutoriel, où nous avons appris à créer nos tâches, les exécuter, leur donner des options et même comment invoquer d'autres tâches parmi d'autres, élargissant ainsi nos connaissances dans ce langage efficace qui contribue aux meilleures pratiques de tout développement.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif