Introduction

Ce guide vous montre comment créer un CLI simple en utilisant Node.js et la bibliothèque inquirer. L’outil inquirer permet d’interagir avec l’utilisateur via une interface en ligne de commande, rendant l’expérience utilisateur plus agréable et interactive. À la fin de ce guide, vous aurez un CLI fonctionnel qui peut exécuter des commandes basées sur les choix de l’utilisateur.

Prérequis

Avant de commencer, assurez-vous que vous avez les éléments suivants installés sur votre machine :

  • Node.js (version 14.x ou supérieure)
  • NPM (installé avec Node.js)

Si vous n’avez pas encore installé Node.js, vous pouvez le télécharger à partir du site officiel.

Étape 1 : Créer un dossier de projet

Commencez par créer un dossier pour votre projet et naviguez à l’intérieur.

mkdir mon-cli
cd mon-cli

Étape 2 : Initialiser un projet Node.js

Une fois dans le dossier du projet, initialisez un projet Node.js. Cette étape crée un fichier package.json qui gère les dépendances et les scripts du projet.

npm init -y

Étape 3 : Créer les dossiers src et bin

Maintenant, créez les dossiers src et bin pour organiser votre code

mkdir src
touch src/cli.js
mkdir bin
touch bin/name-cli.js
  • Le dossier src contiendra la logique principale de votre application.
  • Le dossier bin contiendra le fichier exécutable qui sera utilisé pour démarrer votre CLI.

Étape 4 : Installation des dépendances

Ensuite, installez esm pour activer le support des modules ES dans Node.js. Vous pouvez également installer d’autres dépendances nécessaires comme inquirer et chalk.

npm install esm inquirer chalk

Étape 5 : Configuration du fichier exécutable bin/name-cli

Ajouter dans fichier exécutable dans le dossier bin le contenu suivant :

#!/usr/bin/env node

// Utilisation de 'esm' pour activer le support des modules ES
require = require('esm')(module);

// Appel de la fonction `cli` dans `src/cli.js` en passant les arguments de la ligne de commande
require('../src/cli').cli(process.argv);

Mise à jour du fichier package.json Voici comment mettre à jour votre fichier package.json pour refléter les modifications :

Étape 6 : Exemple du code src/cli.js

Maintenant que le projet est prêt, vous pouvez commencer à développer votre CLI. Voici un exemple:

import inquirer from 'inquirer';
import chalk from 'chalk';

// Fonction pour afficher un message de bienvenue
function welcomeMessage() {
  console.log(chalk.green('Bienvenue dans le CLI interactif !'));
}

// Fonction pour poser des questions à l'utilisateur
async function askQuestions() {
  const answers = await inquirer.prompt([
    {
      type: 'list',
      name: 'choix',
      message: 'Que souhaitez-vous faire ?',
      choices: [
        'Voir un message de bienvenue',
        'Quitter le programme',
      ],
    },
  ]);

  switch (answers.choix) {
    case 'Voir un message de bienvenue':
      welcomeMessage();
      break;
    case 'Quitter le programme':
      console.log(chalk.red('Au revoir !'));
      process.exit();
      break;
    default:
      console.log('Choix non valide');
      askQuestions();
  }
}

// Fonction principale du CLI, acceptant les arguments de la ligne de commande
export function cli(argv) {
  console.log(`Arguments passés: ${argv.join(' ')}`);
  askQuestions();
}

Étape 7 : Exécuter le CLI

  • Installation locale du CLI : Pour installer le CLI localement et le rendre accessible depuis n’importe où dans le terminal, utilisez la commande suivante :
npm link
  • Exécution du CLI Maintenant, vous pouvez exécuter votre CLI avec la commande suivante dans le terminal (le nom spécifié dans le fichier package.json) :
name-cli

Cela affichera les options définies dans le CLI, et l’utilisateur pourra interagir avec les questions.