Qu'est-ce que Lerna ?

26 juillet 2023

Qu'est-ce que Lerna ?

La recherche est effectuée par Marielle

Les projets JavaScript sont partout de nos jours : ils alimentent le backend, le frontend, les ordinateurs de bureau, les téléphones portables et bien plus encore ! Mais voici la sauce secrète : si votre projet implique plusieurs dépôts JavaScript, il est temps de passer à la vitesse supérieure en les fusionnant dans la même version d'un dépôt unique/mono et en prenant le contrôle avec Lerna.

Pourquoi ? Parce que le partage de code est le turbo boost de la vitesse de développement. Et lorsqu'il s'agit de travailler en équipe et de collaborer, rien ne vaut la puissance d'une monorepo, surtout lorsqu'elle est équipée des bons outils.

Qu'est-ce que Lerna exactement ?

Lerna est l'original outil monorepo pour TypeScript/JavaScript.

Lerna est un système de construction de pointe et efficace conçu pour gérer et publier plusieurs paquets JavaScript/TypeScript à partir d'un seul dépôt. Il permet aux développeurs de décomposer de vastes bases de code en paquets pouvant être déployés indépendamment. De la gestion des dépendances et de la liaison des paquets aux tests approfondis et à la publication transparente dans le registre NPM, Lerna rationalise chaque étape du processus de publication.

En s'appuyant sur des outils traditionnels tels que npm et FilLerna comprend les interconnexions complexes entre les paquets au sein du dépôt git lui-même. Il va sans dire que cela simplifie grandement le processus de partage du code au sein du dépôt, en le rendant accessible sans effort.

Lerna dispose de deux modes de gestion des versions : fixe et indépendant. Le mode fixe maintient toutes les versions des paquets au même niveau. Cette approche est assez populaire ; vous l'avez peut-être vue dans Angular :

Le mode indépendant nous permet d'avoir différentes versions par paquet. Si vous avez un grand ou un projet complexeL'utilisation d'un référentiel unique pour tous ses paquets peut faciliter l'organisation et la maintenance.

Pourquoi Lerna ?

Le succès de Lerna se retrouve dans les milliers d'équipes dans le monde qui l'utilisent, comme Jest, NestJS, Create React App, Strapi, WebdriverIO, et Nx.

Monorepos vous permet de développer plusieurs paquets dans le même dépôt, ce qui est fantastique pour la productivité. Vous pouvez développer plusieurs paquets, partager du code, établir une propriété claire et disposer d'une intégration continue (CI) rapide et unifiée. C'est pourquoi de plus en plus d'équipes adoptent ce mode de développement.

Pour bien utiliser les monorepos, il faut un bon outil de monorepo, et c'est exactement ce que propose Lerna. Lerna est rapideLe système de gestion de l'information de l'UE est un système de gestion de l'information, largement utilisé et testé au combat.

Services de développement complet StarTechUP

Avantages de l'utilisation de Lerna Bootstrap

L'utilisation de Lerna Bootstrap est un excellent moyen de démarrer rapidement votre projet. Il met en place une structure initiale de dépôt mono pour vous, que vous pouvez modifier plus tard selon vos besoins.

Voici d'autres avantages de l'utilisation de la fonction Lerna Bootstrap :

Ne jamais dupliquer le code deux fois

Lerna empêche intelligemment l'exécution de tâches qui ont déjà été exécutées. Au lieu de cela, il restaure les fichiers et les sorties terminales à partir de son cache, ce qui garantit l'efficacité et permet de gagner un temps précieux en matière de développement. En adhérant à ce principe et en exploitant les capacités de Lerna, les développeurs peuvent rationaliser leur flux de travail et maintenir une base de code propre et organisée.

Cache distribué

Le cache distribué est la capacité de partager le cache de calcul entre les développeurs ou les machines CI/CD. Cela permet non seulement d'améliorer la collaboration, mais aussi de contribuer à une réduction significative des délais moyens de CI. En tirant parti de cette fonctionnalité, les équipes peuvent optimiser leurs flux de développement et d'accélérer les processus de construction et de déploiement, ce qui permet d'améliorer la productivité et l'efficacité.

Dépendances de la cible

Avec Lerna, vous pouvez spécifier des dépendances entre différentes cibles (scripts npm). Ainsi, au lieu de gérer les dépendances et de les exécuter une par une, vous pouvez exécuter une seule commande pour lancer toutes les cibles dépendantes ensemble. Cela vous permet de gagner beaucoup de temps, en particulier lorsque vous avez un grand nombre de cibles à gérer.

Une exécution efficace

Avec Lerna, vous pouvez exploiter toute la puissance de la parallélisation tout en conservant un ordre d'exécution correct. Imaginez ceci : autant de commandes que possible exécutées simultanément, garantissant une exécution efficace et rapide. Dites adieu aux retards dans l'exécution des commandes, en particulier lorsque vous avez affaire à de nombreux autres paquets.

Une mise à l'échelle infinie avec une exécution distribuée

Lerna vous permet d'exécuter des commandes sans effort sur plusieurs machines, éliminant ainsi le besoin de configurations complexes. Lerna peut s'exécuter sur autant de machines que vous le souhaitez sans avoir à effectuer de fastidieuses configurations. Cette capacité exceptionnelle accélère l'exécution des commandes, ce qui est particulièrement avantageux lors de la publication de paquets.

Puissant visualisateur de graphiques

Lerna offre un visualiseur interactif robuste de l'espace de travail qui améliore votre compréhension de l'architecture de votre espace de travail. Cet outil puissant fournit des informations précieuses sur les relations entre vos paquets, ce qui vous permet d'identifier et de résoudre facilement tout problème potentiel.

DX poli

Lerna dispose d'un puissant CLI dynamique qui vous permet de ne voir que ce qui est important lorsque vous exécutez le même processus ou les mêmes commandes sur plusieurs projets. Ainsi, vous ne serez plus submergé par une liste interminable de commandes. Vous ne verrez que celles qui sont réellement importantes pour le projet sur lequel vous travaillez.

Minime

Lerna se targue d'un processus de configuration transparent, ce qui permet d'éviter l'encombrement de vos fichiers. Il améliore l'exécution de vos scripts npm, offrant une vitesse supérieure. En conséquence, vous gagnerez un temps précieux sur l'installation de Lerna et vous pourrez utiliser sa puissance de manière efficace.

Lerna fait tout

Pourquoi avoir des outils séparés pour exécuter des tâches, lier des paquets, et ensuite publier des paquets vers eux ? Lerna le fait - moins de configuration, moins de frais généraux. Lerna est un outil unique qui peut faire tout ce dont vous avez besoin pour gérer votre monorepo, ce qui peut vous faire gagner beaucoup de temps et d'efforts.

Inconvénients de l'utilisation de Lerna

En dépit de toutes ses excellentes caractéristiques, l'utilisation de Lerna présente certains inconvénients. Voici quelques points à connaître avant de commencer à l'utiliser :

L'exécution des tests est longue et la coloration syntaxique n'est plus assurée.

La commande Lerna run test passe en revue chaque paquet et exécute le script de test déclaré dans le fichier package.json - le problème ici est qu'elle lance un programme de test pour chaque instance qu'elle trouve. Cela signifie aussi que notre mise en évidence de la syntaxe (passing/failing/warnings, etc.) est omise parce que les tests sont lancés dans un processus shell séparé.

Les appels au réseau pour la résolution des dépendances peuvent devenir un goulot d'étranglement

Afin de résoudre les dépendances entre les paquets, Lerna effectue des appels HTTP ou des appels au système de fichiers. Si vous avez un grand nombre de paquets, ces appels réseau peuvent s'accumuler et devenir un goulot d'étranglement majeur dans votre flux de travail.

Le mécanisme national de prévention prend du temps pour publier tous les changements qui s'y rapportent

Lorsque vous apportez des modifications à plusieurs paquets, cela peut prendre beaucoup de temps avant que tous les paquets soient publiés avec NPM. Si vous avez un grand nombre de paquets ou si un paquet a beaucoup de dépendances sur d'autres paquets, cela peut s'accumuler et ralentir considérablement votre flux de travail.

ordinateur portable sur pied

Fonctionnalités de base

Lerna possède quelques fonctionnalités de base qui en font l'un des outils monorepo les plus populaires. Il s'agit notamment de

Bootstrapping

Lerna démarre tous les paquets dans le repo principal. En d'autres termes, il installe toutes les dépendances et relie les dépendances npm aux dépendances croisées, s'il y en a. Il relie tous les paquets npm aux dépendances partagées en créant des liens symboliques. Si une mise à jour est effectuée dans la dépendance partagée, elle prend immédiatement effet dans le code qui l'utilise.

Édition

Le processus de publication n'a jamais été aussi simple. Tout ce que vous avez à faire est d'entrer une simple commande (Lerna publish), qui vous demandera une nouvelle version de Lerna et mettra à jour tous les paquets sur git et npm. Vous pouvez également forcer la publication d'un nouveau paquet si vous le souhaitez.

Versioning

Lerna permet de vérifier quels paquets ont été modifiés depuis la dernière version. Vous pouvez également vérifier les différences pour tous les paquets ou pour un seul paquet depuis la dernière version.

Exécution simultanée de commandes

Au lieu d'aller dans chaque projet et de suivre les commandes après avoir démarré le serveur, vous pouvez écrire un script dans le fichier package.json racine, en utilisant la commande lerna run pour exécuter la commande dans tous les projets simultanément. Ce comportement est utilisé lorsque vous souhaitez exécuter tous les serveurs en même temps.

Lerna offre de nombreuses autres fonctionnalités. Il ne s'agit là que des fonctions de base. Jetez un coup d'œil à leur la documentation pour plus d'informations.

Comment utiliser Lerna

Nous avons créé un paquet d'intégration et lié l'en-tête à l'intégration à l'aide de la commande suivante :

npx lerna init

Toutes les fonctionnalités de Lerna fonctionneront de la même manière.

Il s'agit de

  • ajouter lerna au package.json racine
  • générer un lerna.json
  • configurer un espace de travail npm/yarn/pnpm

Ensuite, exécutez la commande ci-dessous :

npm install

Désormais, tous les projets de l'espace de travail peuvent se référencer correctement les uns les autres grâce à la liaison locale des paquets.

Structure

Structure de Lerna

Comme Lerna est alimenté par Nx, vous pouvez utiliser ses capacités pour ouvrir une visualisation interactive du graphique du projet de l'espace de travail.

Pour ouvrir la visualisation, exécutez :

npx nx graph

Visualisation de Lerna

Intégration

Nous avons créé un paquet d'intégration et lié l'en-tête à l'intégration à l'aide de la commande ci-dessous :

lerna add header -scope=integration

Lerna ajouter un en-tête
Pied de page Lerna

Nous avons également essayé de publier les paquets dans NPM :

publier des paquets dans NPM

Intégration liée à l'application remix :

application remix

Sorties dans le frontend à partir de différents paquets :

sorties dans le frontend

Conclusion

Lerna résout trois des plus grands problèmes du monorepo. A découvrir ici. C'est en effet une aide précieuse pour la réutilisation du code, et nous pouvons obtenir une nouvelle version avec une gestion simplifiée des dépendances et une publication simplifiée des paquets.

Si vous prévoyez de construire une grande application et que vous envisagez de l'architecturer en plusieurs projets, vous devriez certainement essayer Lerna. Lerna peut faire beaucoup plus.

Besoin de services Front-end et Back-end ?

Votre projet de rêve peut sembler impossible, mais pas pour nous ! Chez StarTechUP, nous offrons services de développement de logiciels avec une approche agile. Nos experts peuvent vous aider dans tous les domaines du développement, de la conception au lancement.

Que vous ayez besoin services frontaux et services d'arrière-planNous pouvons vous fournir des développeurs qualifiés qui ont de l'expérience dans le travail avec Lerna. Vous pouvez également obtenir notre Services DevOps pour déployer et maintenir vos applications. De plus, notre Développeurs AQ garantit un code de haute qualité !

Nous contacter pour en savoir plus sur la manière dont notre équipe d'ingénieurs expérimentés peut vous aider. Nous sommes impatients de connaître votre projet et de savoir comment nous pouvons vous aider !

A propos de l'auteur : Andrea Jacinto - Rédacteur de contenu

Rédactrice de contenu dotée d'une solide expérience en matière de référencement, Andrea a travaillé avec des spécialistes du marketing numérique de différents domaines pour créer des articles optimisés qui sont informatifs, digestes et agréables à lire. Aujourd'hui, elle écrit pour StarTechUP afin de présenter les derniers développements technologiques aux lecteurs du monde entier. Vue sur Linkedin

PLUS D'INFOS