Vous arrive-t-il de passer un temps considérable à élaborer du code JavaScript ? Cet article vous présente une sélection de packages Node.js susceptibles de rendre le quotidien d’un développeur JavaScript plus productif et plus aisé.
JavaScript est un langage synchrone à fil unique, très répandu dans le développement d’applications et de logiciels. Il a permis la création de nombreux frameworks tels que Reactjs, Angularjs, Vuejs, Expressjs et Node.js.
De nombreux développeurs rencontrent des difficultés lors de la programmation en JavaScript, notamment en raison de la complexité de concepts tels que les promesses, les boucles d’événements, les fonctions de rappel, l’hoisting ou encore les closures.
Pour faciliter le développement en JavaScript, il existe de nombreux packages Node.js qui aident à gérer les erreurs, à formater le code, à supprimer des fichiers, à déboguer, à renforcer la sécurité, et bien plus encore. Certains de ces packages fournissent des interfaces utilisateur interactives en ligne de commande, offrant ainsi une représentation visuelle améliorée de l’utilisation du processeur, de la capacité de traitement, ou encore de la gravité des erreurs.
Retire.js
Retire.js est une bibliothèque JavaScript qui répertorie les vulnérabilités associées aux différentes versions des bibliothèques JavaScript.
Elle peut être utilisée comme une extension de navigateur (Chrome ou Firefox), un scanner en ligne de commande, un plugin Grunt, etc. L’installation s’effectue via la commande suivante :
$ npm install -g retire
Retire.js comprend différentes commandes pour l’analyse des fichiers JavaScript et Node.js. Il analyse les sites web en JavaScript et affiche les avertissements dans la console du développeur. Lorsqu’il détecte des vulnérabilités, Retire.js génère le code de sortie 13. La tâche Gulp peut automatiser l’analyse des fichiers et signaler les vulnérabilités.
Np
Np est un package JavaScript proposant diverses fonctionnalités telles que le nettoyage de code, l’installation de dépendances, la publication de packages avec des balises, etc. Il garantit que le code est transmis à la branche principale et propose une interface utilisateur interactive.
L’authentification à deux facteurs renforce la sécurité lors de la création de nouveaux dépôts. Np s’assure que la dernière version est utilisée en réinstallant les dépendances. La version finale est envoyée vers npm. L’installation s’effectue grâce à la commande suivante :
$ npm install --global np
Ses différentes fonctionnalités incluent la possibilité de publier du code depuis n’importe quelle branche, de créer des sous-répertoires pour la publication, d’ignorer le nettoyage du code et les tests, etc. La configuration de np peut être réalisée globalement ou localement via les indicateurs CLI dans les fichiers de configuration comme np-config.js et no-config.json.
ESLint
ESLint est un outil de package JavaScript qui analyse le code JavaScript et identifie les schémas dans le code ECMA/JavaScript. Il évalue les modèles en utilisant AST. Les règles de l’outil sont définies sous forme de plugins, qui peuvent être ajoutés dynamiquement lors de l’exécution. ESLint peut être installé à l’aide de la commande ci-dessous :
$ npm init @eslint/config
Une fois installé via la commande précédente, un fichier .eslintrc est généré avec un ensemble de règles incluant des définitions d’erreurs et leurs conditions respectives. ESLint permet de définir toutes les dépendances dans le fichier .lock de l’utilisateur, sans utiliser son propre fichier .lock. Il assure également un niveau de sécurité élevé.
Shelljs
Shelljs est un environnement permettant d’exécuter des commandes UNIX sur n’importe quel système d’exploitation via l’API Node.js. Shelljs est portable et prend en charge les plugins tiers. Les différentes commandes utilisables sont notamment echo, exec, chmod, pushd, popd, cd ou encore cat. L’installation de Shelljs s’effectue via la commande suivante :
$ npm install [-g] shelljs
Il a été testé dans de nombreux projets tels que Firefox, JSHint, ESLint, Zepto, etc. Il est recommandé d’importer localement les packages Shelljs plutôt que globalement. Il peut également être configuré en mode silencieux, fatal, verbeux, etc.
Omelette
Omelette propose un modèle pour l’auto-complétion de code dans les projets Node et Deno. Il utilise une API très simple et prend en charge les API asynchrones et arborescentes. Voici un exemple d’extrait de code pour la mise en œuvre d’Omelette :
import * as omelette from 'omelette'; const firstArgument = ({ reply }) => { reply([ 'beautiful', 'cruel', 'far' ]) } const planet = ({ reply }) => { reply([ 'world', 'mars', 'pluto' ]) } omelette`hello|hi ${firstArgument} ${planet}`.init()
Après avoir importé Omelette, il est nécessaire de créer un objet Omelette. Ensuite, différentes fonctions de l’objet omelette peuvent être appelées pour l’auto-complétion de code, comme setupShellInitFile() pour la configuration et cleanupShellInitFile() pour le nettoyage. Il permet également d’utiliser des fonctions Lambda pour créer des API de modèles littéraux complexes.
Prettier
Prettier sert à formater le code. Il permet d’ajouter des espaces de tabulation, de contrôler la longueur maximale des lignes et de garantir une indentation correcte dans les instructions conditionnelles et les boucles. Il transforme le code en un format soigné et facile à lire. Par exemple :
L’extrait de code ci-dessous,
foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());
est converti en ceci avec l’extension Prettier :
foo( reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne() );
Il peut fonctionner dans des environnements CI, des environnements de développement intégrés (IDE), etc.
jscpd
jscpd est un outil de gestion de la dette technique. Ce package JavaScript permet de détecter les extraits de code dupliqués dans divers codes et documents numériques. Il utilise l’algorithme de correspondance de chaînes Rabin-Karp pour trouver les doublons de code.
jscpd/core a la capacité de détecter la duplication de code dans différents environnements, tandis que jspd/tokenizer est utilisé pour tokeniser le code source du programme. En plus de cela, il existe de nombreux autres packages tels que html-reporter, badge-reporter, leveldb-store, etc. L’installation de jscpd se fait avec la commande suivante :
$ npm install -g jscpd
jscpd est utilisé par des outils tels que GitHub Super Linter, Code-Inspector, Mega-Linter et Codacy, chacun avec un objectif différent : traitement du langage naturel, agrégateurs de lignes, analyse de code, etc.
Vtop
Vtop est un moniteur qui offre une représentation graphique de l’activité de la ligne de commande. Il fournit des informations sur l’utilisation du processeur en analysant les différents threads et processus en cours d’exécution et en les représentant visuellement via des graphiques, des pics, etc. Il a été développé à l’aide de JavaScript, Makefile et Shell. L’installation de Vtop se fait grâce à la commande suivante :
$ npm install -g vtop
Différents thèmes et codes de couleurs peuvent être utilisés pour personnaliser l’interface graphique. Divers raccourcis clavier sont également disponibles : « u » pour une mise à jour, « g » pour accéder au processus en haut de la liste, « G » pour aller à la fin de la liste, « dd » pour terminer les processus d’un groupe spécifique, etc.
Standardjs
Standardjs est une bibliothèque JavaScript qui automatise la configuration des fichiers, formate le code et détecte rapidement les problèmes de gestion des exceptions par les développeurs. La commande pour installer Standardjs est la suivante :
$ npm install standard --global
Une fois installé, vous pouvez l’exécuter sur un fichier ou un extrait de code en utilisant la commande « standard » dans l’interface de ligne de commande. Toutes les dépendances de Standardjs peuvent être ajoutées en définissant « standard: « * » » dans l’objet de dépendance du fichier package.json.
Il peut aussi être installé comme plug-in pour divers éditeurs de texte tels que Visual Studio Code, Sublime Text, Atom, Vim ou encore Brackets. Node.js, Expressjs, npm, Brave et GoDaddy utilisent Standardjs pour répondre à leurs besoins.
NodeJsScan
NodeJsScan est un scanner statique de code de sécurité pour les applications Node.js. Il fournit des informations sur l’état de sécurité d’une application via une interface utilisateur interactive. Il peut être intégré à diverses applications telles que Slack pour les alertes/notifications, aux alertes par e-mail en configurant les paramètres SMTP dans le fichier settings.py de NodeJsScan, ou encore au pipeline CI/CD. Il aide également à la création d’images Docker.
Il enregistre les erreurs, les informations et les messages d’avertissement. Une description détaillée de l’erreur est fournie, comprenant notamment la raison de son apparition, sa gravité, les numéros de ligne où les erreurs se sont produites, le nombre de fichiers analysés et les problèmes détectés. Des graphiques et des tableaux sont également utilisés pour faciliter la lecture et l’analyse.
Trash
Trash est une bibliothèque JavaScript qui déplace les fichiers supprimés vers la corbeille au lieu de les supprimer définitivement. Elle prend en charge Mac, Linux et Windows. La commande pour installer Trash est la suivante :
$ npm install trash
Trash est une API qui prend des entrées et des options comme paramètres de fonction lorsque la fonction trash() est invoquée. L’entrée peut être une chaîne ou un tableau de chaînes. Les options peuvent être un objet. La fonction corbeille renvoie une promesse. Différentes commandes sont utilisées en fonction du système d’exploitation : macOS-trash sous MacOs, XDG Spec sous Linux et la corbeille sous Windows.
Xo
Xo est un wrapper JavaScript et TypeScript qui utilise ESLint en interne. Il aide à créer un code plus lisible en ajoutant des indentations, des points-virgules, des guillemets simples ou encore des virgules lorsque cela est nécessaire. De nombreux plugins ESLint comme unicorn, import, ava, n peuvent être utilisés avec Xo. L’installation de xo se fait avec la commande suivante :
$ npm install xo --save-dev
Les problèmes peuvent être résolus automatiquement à l’aide de la commande `$xo –fix`. Xo peut être configuré en utilisant la propriété xo dans le fichier package.json. Il peut aussi être installé comme plugin pour des éditeurs tels que Vim, Visual Studio Code, Atom, Sublime Text ou Emacs.
diff2html
diff2html signifie « analyseur de différences et générateur HTML ». Il met en évidence les changements dans le code de la version actuelle par rapport à la version précédente. Il permet aux développeurs d’identifier et de comprendre plus facilement les modifications en utilisant des codes de couleurs.
Il met en évidence les modifications ligne par ligne et côte à côte. Les modifications de la syntaxe du code sont également identifiées, et les lignes similaires sont regroupées pour suivre plus facilement les modifications. Voici la commande pour installer diff2html :
$ npm install diff2html
Il est aussi intégré à la ligne de commande. Certains projets utilisant diff2html sont Jenkins, Codacy, Ungit, git-explorer et code-annotation, entre autres.
Chalk
Chalk est un module Node.js qui permet de formater et de styliser le code. Il aide également à créer et à ajouter des thèmes de couleurs au texte. Il s’agit d’une API expressive et ses performances sont excellentes. Il imbrique les styles et n’a aucune dépendance. L’utilisation de Chalk est illustrée dans l’extrait de code ci-dessous :
import chalk from 'chalk'; console.log(chalk.blue('Hello world!'));
chalk.level définit les couleurs prises en charge à chaque niveau. ‘0’ indique que toutes les couleurs sont désactivées, ‘1’ indique la prise en charge des couleurs de base, ‘2’ indique la prise en charge de 256 couleurs et ‘3’ indique la prise en charge de Truecolor. Les différents modificateurs de style pour le formatage de texte pris en charge par Chalk sont inverted, hidden, visible, strikethrough, bold, reset, italic, underline, overline, dim, etc.
NpKill
Npkill est un outil qui supprime les anciens et volumineux dossiers de modules de nœuds. Il permet de supprimer très rapidement les modules de nœuds et de libérer de l’espace dans votre système. Il a été développé avec TypeScript, JavaScript et Go. Il n’a aucune dépendance et est facile à utiliser. La commande pour installer Npkill est :
$ npm i -g npkill
Tous les modules de nœuds spécifiés dans le chemin avec la commande npkill seront supprimés. Il est cependant essentiel de faire preuve de prudence lors de la suppression de ces modules, car cette action est irréversible. Si les modules d’un projet actif sont supprimés, les fichiers risquent d’être corrompus et les modules devront être réinstallés.
fkill-cli
fkill-cli est un outil de ligne de commande open source et interactif qui permet de terminer des processus et des ports sous Linux. Il a été développé avec Node.js. Il est simple, gratuit, sécurisé et compatible multiplateforme. Il fonctionne sous Windows, Linux et macOS. La commande pour installer fkill-cli est :
$ npm install --global fkill-cli
Le nom et l’ID du processus sont requis pour le terminer. « -f » force l’exécution de l’opération, tandis que la commande « -v » affiche les arguments du processus. L’API fkill prend des entrées et des options comme arguments et renvoie un objet de promesse. Certaines options sont force, silent, ignoreCase, tree et forceAfterTimeout.
Localtunnel
Localtunnel est une plateforme qui permet de partager des services web depuis un environnement externe avec l’environnement local d’un ordinateur, sans modifier les paramètres DNS ou de pare-feu du système.
Les requêtes sont mandatées par Localtunnel et transférées au serveur déployé localement après l’attribution d’une URL accessible publiquement. La commande pour installer Localtunnel est la suivante :
$ npm install -g localtunnel
Localtunnel utilise des requêtes HTTPS pour assurer la sécurité. Cette API peut notamment servir à tester des webhooks ou à tester l’interface utilisateur dans des navigateurs cloud.
Inquirer.js
Inquirer.js est une interface utilisateur interactive en ligne de commande pour les applications Node.js. Il facilite le processus de recherche d’erreurs, d’analyse des entrées, de validation des réponses et de gestion des invites hiérarchiques. Il utilise des modules ESM natifs pour la mise en œuvre de ses fonctionnalités. La commande pour installer Inquirer.js est la suivante :
$ npm install --save inquirer
Les différentes méthodes utilisées incluent prompt, registerPrompt, createPromptModule, etc. prompt() est une fonction qui prend une question et une réponse comme entrées et renvoie une promesse lorsqu’elle est invoquée.
Question est un objet qui contient les informations relatives à la question (type, message, valeur par défaut, choix, filtre, etc.). La paire d’objets clé-valeur de réponse contient les réponses du client. La clé est la propriété question, et la valeur peut contenir confirm, input, number, rawlist, etc.
http-server
http-server est un serveur http statique en ligne de commande. Il est simple et ne nécessite aucune configuration. Il se compose de deux fichiers : index.html et 404.html. index.html est le fichier par défaut qui sera rendu sur les requêtes. 404.html est rendu lorsqu’un fichier n’est pas trouvé. La commande pour installer http-server est la suivante :
$ npm install --global http-server
Il a été développé avec HTML et JavaScript. Il assure la sécurité grâce aux certificats TLS/SSL. Il utilise l’algorithme RSA pour le chiffrement et le déchiffrement des clés. Il permet également de définir une phrase secrète avec une clé privée pour renforcer la sécurité.
Derniers mots
JavaScript est le langage de programmation le plus répandu pour le développement de logiciels. Afin de simplifier le travail des développeurs, de nombreux packages Node.js ont été créés.
Les packages Node.js tels que Retire.js, Localtunnel, Xo, Inquirer.js, Shelljs, fpkill, NodeJsScan ou encore Prettier, sont très utiles pour formater le code, renforcer la sécurité, mettre en évidence les changements de code, supprimer les modules de nœuds volumineux et inutiles, etc. Ils aident les développeurs à déboguer, écrire et gérer leur code de manière efficace.
Vous pouvez également consulter nos articles sur l’installation de Node.js et NPM sous Windows et macOS.