Apprenez à créer un programme avec une interface de ligne de commande standard à l'aide de cette bibliothèque utile.
Les applications CLI (Command Line Interface) sont des applications textuelles simplistes qui s'exécutent dans le terminal pour effectuer des tâches spécifiques. Les applications CLI jouent un rôle crucial dans le flux de travail de presque tous les développeurs et professionnels de l'informatique.
Il s'agit principalement d'outils utilitaires qui interagissent avec le système d'exploitation ou des applications qui sont soit installé localement ou disponible sur Internet pour effectuer une tâche en fonction de la saisie de l'utilisateur et directives.
Comprendre les applications CLI
Une interface de ligne de commande vous permet d'interagir avec un programme en tapant des lignes de texte. De nombreux programmes CLI s'exécutent différemment selon la commande que vous utilisez pour les démarrer.
Par exemple, le programme ls affiche les informations sur le fichier et le contenu des répertoires. Vous pourriez l'exécuter comme ceci :
ls -l /home
Cette commande comprend :
- Le nom du programme: ls.
- Une option (ou un drapeau). Dans ce cas, -l est une option qui est l'abréviation de « long » et produit des informations plus détaillées.
- Une dispute, /home. Ici, l'argument spécifie un chemin d'accès au répertoire pour lequel afficher les informations.
Bien que chaque programme puisse définir sa propre interface de ligne de commande, certains éléments sont communs et largement utilisés. Vous devez suivre ces normes afin qu'une personne familiarisée avec une interface de ligne de commande puisse utiliser facilement vos programmes.
Qu'est-ce que Commander.js?
Commander.js est un package qui vous permet de créer des applications CLI dans Node.js. Il dispose d'une riche bibliothèque de fonctionnalités qui vous permettent de créer une application CLI standard, effectuant une grande partie du travail fastidieux. Il vous suffit de définir les commandes, les options et les fonctionnalités de votre application CLI.
En le combinant avec d'autres packages tels que Chalk.js pour le style, vous pouvez rapidement créer une application CLI entièrement fonctionnelle dans Node.js.
Création d'une application CLI dans Node.js à l'aide de Commander.js
Prenons un exemple d'application CLI, urbain-cli, qui recherche la signification des mots et des abréviations des réseaux sociaux à partir de le dictionnaire urbain. Vous apprendrez à créer la CLI et à la publier sur le npm registre des packages afin que d'autres puissent l'installer.
Créez un nouveau dossier et initialisez un nouveau projet Node.js avec les commandes suivantes :
mkdir urbanary-cli
cd urbanary-cli
npm init -y
Cette CLI utilisera Axios pour envoyer des requêtes HTTP à l'API du dictionnaire urbain. Vous pouvez utiliser API rapide pour vérifier les points de terminaison et afficher les informations d'identification.
Une CLI simple avec une sous-commande et une aide
Pour commencer à créer votre CLI, installez Commander et Axios avec la commande suivante :
npm install commander axios
Créer un nouveau dossier, poubelle, dans le répertoire de votre projet et un nouveau fichier vide, index.js:
mkdir bin
cd bin
touch index.js
Le poubelle (abréviation de « binaire ») est important car il contient le fichier de point d’entrée que Node appelle lorsque vous exécutez votre CLI. Le index.js file est ce fichier de point d’entrée. Maintenant, modifiez le fichier index.js et commencez à créer votre CLI avec l'API Commander.js.
Tout d’abord, importez le programme objet du commandant :
const { program } = require('commander');
Vous utiliserez le programme objet pour définir l’interface de votre programme, y compris les sous-commandes, les options et les arguments. L'objet a des méthodes correspondantes pour chacune d'entre elles; par exemple, pour définir une sous-commande, utilisez le commande méthode.
Définir un trouver sous-commande permettant à la CLI de rechercher des mots dans le dictionnaire urbain et d'y ajouter une description à l'aide du code ci-dessous :
// index.js
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
Ceci enregistre un trouver commande, qui attend un mot après et une description de celui-ci. L'utilisation de crochets angulaires signifie que le mot est un argument obligatoire; utilisez plutôt des crochets ([]) pour le rendre facultatif.
Vous devez ajouter une description car Commander.js l'utilise pour générer du texte d'aide. Lorsque vous exécutez l'application avec le aide commande, vous obtiendrez un guide d’utilisation standard.
Pour tester cela, ajoutez ce qui suit :
program.parse()
Ensuite, exécutez le programme et transmettez-le au aide commande pour obtenir le résultat ci-dessous :
C'est ainsi que n'importe quelle application CLI standard affichera son aide aux utilisateurs et, avec Commander, vous n'aurez pas à vous soucier de la créer vous-même. Le -h et --aide les options sont utiles pour vérifier le guide d’utilisation d’une commande.
Définir les options et préparer le programme final
Vous définissez également une option en chaînant les option méthode à la définition de la commande.
Voici comment définir une option pour inclure des exemples dans les définitions de mots :
program.option('-e, --example', "Display examples")
Et voici comment définir une option spécifiant le nombre de définitions à renvoyer :
program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
Le option La méthode accepte deux paramètres de chaîne, un pour le nom de l’option (formes courtes et longues) et l’autre pour sa description. L'extra [montant] argument dans le compter L'option est la valeur du nombre de définitions à afficher.
Maintenant, la dernière méthode à ajouter est la action méthode. Vous mettrez en œuvre le trouver fonctionnalité de la commande dans cette méthode. Ajoutez-le à la chaîne pour que votre code ressemble maintenant à ceci :
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
.option('-e, --example', "Display examples")
.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
.action(async (word, options) => {});
Avec cette configuration, voici ce qu'est une commande pour obtenir trois définitions de mdr avec des exemples ressemblera à :
urbanary-cli find lol -e -c 3
Ou, en utilisant la forme longue de chaque option :
urbanary-cli find lol --example --count 3
Vérifier Page npm du commandant pour en savoir plus et comment adapter ses fonctions à vos différents cas d'usage.
Mise en œuvre des fonctionnalités du programme
Tout d’abord, importez Axios dans votre index.js déposer comme suit :
const axios = require('axios');
Ensuite, dans le corps fonctionnel de action, vous pouvez implémenter la logique pour faire des requêtes à Urban Dictionary et afficher les résultats selon vos options.
Commencez par définir votre demande :
let requestOptions = {
method: 'GET',
URL: "https://mashape-community-urban-dictionary.p.rapidapi.com/define",
params: { term: word },
headers: {
'X-RapidAPI-Key': YOUR_RAPID_API_KEY,
'X-RapidAPI-Host': 'mashape-community-urban-dictionary.p.rapidapi.com'
}
}
Faites ensuite la requête à l'API en utilisant Axios avec le code suivant :
try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}
La seule propriété dont vous avez besoin dans les données de réponse est la liste propriété qui contient des définitions et des exemples.
Toujours dans le essayer block, ajoutez cette logique pour gérer les options et affichez les résultats comme suit :
if (options.example && options.count) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
console.log(`Example:\n${elem.example}\n`);
});
} elseif (options.count && !options.example) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);
definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
});
} elseif (options.example) {
console.log(`Definition: ${wordData[0].definition}`);
console.log(`Example:\n${wordData[0].example}`);
} else {
console.log(`Definition: ${wordData[0].definition}`);
}
Ce code évalue les arguments de la commande à l'aide d'instructions if-else pour déterminer comment afficher la sortie. Si la exemple et compter les options sont passées, il parcourt motDonnées et imprime le nombre spécifié de définitions et d'exemples avec eux.
Si tu réussis seulement compter, il affiche cette quantité de définitions sans exemples. Si tu réussis seulement exemple, il affiche une définition avec un exemple de phrase. Le autre L'instruction est le comportement par défaut pour imprimer uniquement la définition si vous ne transmettez aucune option.
L'application est maintenant prête, la prochaine étape consiste donc à la rendre exécutable. Commencez par ajouter une ligne de shebang au début de votre fichier bin/index.js afin que vous puissiez l'exécuter en tant que script autonome :
#!/usr/bin/env node
Ensuite, ouvrez votre package.json fichier, modifiez la valeur du principal propriété et ajoutez un poubelle propriété après comme ceci :
"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},
La clé urbain-cli, sous poubelle est la commande que vous entrerez dans votre terminal pour exécuter votre application. Assurez-vous donc d'utiliser un nom approprié lors de la création de vos applications en ligne de commande.
Courir npm installer -g pour installer l'application globalement, et vous pourrez exécuter l'application sous forme de commande depuis votre terminal.
L'image ci-dessous montre le processus d'installation et une commande de test pour trouver la signification de lmk:
Vous pouvez également le publier dans le registre des packages npm en exécutant publication npm dans le terminal dans le répertoire du projet. Cela le rend installable par n'importe qui, de n'importe où, en utilisant installation npm.
Il est plus facile de créer et de publier votre application avec Node.js que lorsque vous créer des CLI avec des technologies comme Rust.
Créez des applications CLI fonctionnelles avec Node.js
Que vous travailliez sur un package npm et que vous ayez besoin d'un utilitaire CLI pour l'accompagner, ou que vous souhaitiez simplement créer un outil pour améliorer votre flux de travail en tant que développeur. Vous avez tout ce dont vous avez besoin pour donner vie à votre idée avec le package Node.js Commander.
Vous pouvez également aller plus loin en utilisant d'autres bibliothèques pour créer des expériences CLI améliorées pour vos applications, Node.js est suffisamment robuste pour répondre à vos besoins sans trop de tracas.