Maison >interface Web >js tutoriel >mise contre asdf pour la gestion de l'environnement de projet JavaScript

mise contre asdf pour la gestion de l'environnement de projet JavaScript

DDD
DDDoriginal
2025-01-04 07:35:36290parcourir

Écrit par Rosario De Chiara✏️

mise et asdf sont des outils conçus pour aider les développeurs à gérer plusieurs versions de langages et d'environnements de programmation. Les deux outils visent à simplifier le développement polyglotte en facilitant la gestion et le basculement entre les versions d'outils, ce qui constitue un défi courant lorsque l'on travaille avec différents langages et frameworks de programmation.

Qu’est-ce qu’ASDF ?

asdf est un gestionnaire de versions populaire qui utilise une technique appelée « shimming » pour basculer entre différentes versions d'outils comme Python, Node.js et Ruby. Il crée des chemins temporaires vers des versions spécifiques, modifiant l'environnement pour garantir que la version correcte d'un outil est utilisée dans différents projets. Cependant, cette méthode peut introduire une surcharge de performances en raison du fonctionnement de ces cales.

Qu'est-ce que la mise ?

mise, abréviation de l'expression française « mise en place », qui désigne la façon dont vous préparez une table, cherche à améliorer l'asdf en supprimant le recours aux cales.

Écrit en Rust, mise modifie directement la variable d'environnement PATH, conduisant à des temps d'exécution plus rapides. Il est conçu pour fonctionner de manière transparente avec les plugins asdf mais offre des fonctionnalités telles que la correspondance floue des commandes et la possibilité d'installer plusieurs versions du même outil simultanément.

Premiers pas avec asdf

Pour installer asdf, suivez le guide de démarrage pour installer les prérequis en fonction de votre système. Une fois l'environnement prêt, vous pouvez cloner le dépôt officiel dans votre répertoire personnel :

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

La commande ci-dessus clonera dans le répertoire .asdf tous les fichiers de script et de configuration nécessaires pour finaliser l'installation.

L'étape suivante, à partir du guide d'installation ci-dessus, consiste à exécuter le script d'installation. Encore une fois, cette étape dépendra des détails de votre environnement et de votre système d'exploitation, suivez donc simplement le guide pour ajouter l'invocation de script appropriée dans votre script d'initialisation shell (par exemple, .bashrc, .bash_profile, etc.). À la fin de ce processus et, généralement après avoir redémarré votre shell, vous devriez pouvoir exécuter asdf en tant que commande :

mise vs. asdf for JavaScript project environment management

À ce stade, asdf est en cours d'exécution mais pour en faire quelque chose d'utile, vous devez installer les plugins pour gérer l'outil (dans le langage asdf) qui sont pertinents pour le projet que vous avez l'intention de développer (par exemple, Node.js, python, etc).

Pour cela, nous installons le plugin pour Node.js. En asdf, un plugin est le morceau de code qui vous permettra de jongler avec différentes versions d'un framework ou d'une bibliothèque. Dans ce cas, nous installerons le plugin Node.js, puis installerons quelques versions de Node.js juste pour comprendre comment asdf les gérera.

Nous allons installer le plugin Node.js avec le code suivant :

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

Veuillez noter que vous devez explicitement adresser le dépôt git contenant le code source du plugin. Une fois le plugin en place, vous pouvez l'utiliser pour installer des versions spécifiques de Node.js avec la commande suivante :

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

Dans cet exemple, vous installez la dernière version qui, au moment de la rédaction, est la 23.1.0. Avec la commande suivante, vous installez une version spécifique de Node.js :

 $ asdf install nodejs latest

Pour vérifier que les deux sont disponibles dans votre système, utilisez ce qui suit :

 $ asdf install nodejs 20.0.0

Pour sélectionner la version de Node.js à utiliser, utilisez la commande suivante :

 $ asdf shim-versions node
 nodejs 20.0.0
 nodejs 23.1.0

asdf gère les différentes versions d'un outil en remplissant un fichier nommé [.tool-versions](https://asdf-vm.com/manage/configuration.html#tool-versions) avec le format suivant :

 $ asdf global nodejs 20.0.0
 $ node --version
 v20.0.0
 $ asdf global nodejs 23.1.0
 $ node --version
 v23.1.0

Le fichier .tool-versions est manipulé automatiquement par asdf avec la commande pour spécifier quelle version d'un donné vous comptez utiliser, comme nous l'avons fait ci-dessus avec Node.js version 20.0.0. En fonction du paramètre global, shell et local, nous ajouterons les versions d'un outil à un fichier .tool-versions spécifique avec différents effets sur votre environnement. Ci-dessous, il y a l'explication de l'impact des paramètres dans le cas où nous installons Node.js version 20.0.0 :

  • asdf global nodejs 20.0.0 : Dans ce cas, nous avons l'intention d'utiliser cette version spécifique dans tout le système partout où elle n'est pas spécifiée différemment
  • asdf shell nodejs 20.0.0 : C'est le cas où nous souhaitons utiliser cette version de Node.js uniquement pour la session shell en cours
  • asdf local nodejs 20.0.0 : Cette version de la commande créera un .tool-versions qui spécifie la version de Node.js uniquement valable pour le répertoire où la commande est exécutée. Cela signifie que nous pouvons avoir différentes versions d'un même outil dans différents sous-répertoires de votre projet. Il s’agit d’une fonctionnalité plutôt intéressante, pertinente pour les projets complexes. Dans l'image suivante, vous pouvez voir comment cela affecte votre environnement :
ruby 2.5.3
nodejs 10.15.0

Avec la première commande, nous disons à asdf d'utiliser la version 20.0.0 dans le répertoire personnel et node --version confirme la version. Ensuite, nous créons un répertoire nommé test. Lors du test, nous exécutons asdf, en spécifiant une version différente pour Node (version 23.1.0) et, encore une fois, le node --version confirme que nous utilisons la version 23.1.0. Enfin, en revenant au répertoire personnel, vous pouvez voir comment la version locale de Node.js est toujours 20.0.0.

Qu'est-ce qu'une cale ?

Maintenant que asdf travaille sur notre système, apprenons ce qu'est une cale et pourquoi elle est importante lorsque l'on travaille avec asdf.

En informatique, un shim est un moyen de rediriger des commandes (par exemple, l'invocation de méthodes de bibliothèque) de manière transparente entre différentes versions. La clé ici est le mot « transparentement ». L'idée même d'asdf est de permettre à l'utilisateur de changer ce qu'on appelle réellement lorsque vous écrivez, disons, un nœud ou un python ou tout autre package, de manière transparente. L'utilisateur continue de taper node ou python mais asdf a défini un chemin différent – ​​une cale – vers la version correcte en fonction de ce qui est écrit dans le fichier .tool-versions.

Un plugin n'est qu'un ensemble de scripts shell intelligents qui permettent à asdf de sélectionner la version appropriée d'une commande spécifique (par exemple, vérifiez le plugin Node.js). Les commandes du répertoire bin implémentent simplement ce qu'asdf doit exécuter lorsque vous utilisez le plugin Node.js pour installer une nouvelle version, sélectionner une version spécifique à utiliser, etc.

Commencer avec mise

Le processus d'installation de mise est plus simple que celui d'asdf car vous n'aurez pas besoin de cloner un dépôt git :

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

Le guide d'activation est assez simple ; une fois que vous aurez exécuté la commande ci-dessus et redémarré votre shell, vous pourrez exécuter ce qui suit :

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

Cela affichera l'état de votre installation. Une fois mise installée, vous devrez peut-être l'activer avec la commande [mise activate](https://mise.jdx.dev/cli/activate.html).

À ce stade, la commande mise est disponible pour être utilisée pour la tâche la plus courante : installer une version spécifique d'un framework pour le rendre disponible globalement pour le système :

 $ asdf install nodejs latest

Nous partons d'une situation où l'exécutable du nœud n'est pas dans le système. À l'aide de la commande mise, nous installons globalement une version de nœud spécifique pour la rendre disponible. Pour vérifier les versions des outils actuellement installés, vous pouvez utiliser la commande suivante :

 $ asdf install nodejs 20.0.0

Dans la commande ci-dessus, vous pouvez voir l'outil de nœud installé dans la case ci-dessus et une version Python.

Comparaison entre asdf et mise

Le framework mise utilise le même mécanisme asdf pour gérer les différentes configurations d'outils dans tout le système et dans des répertoires spécifiques. Le rôle du fichier .tool-versions dans asdf est joué par le fichier mise.toml, qui collectera les configurations.

En théorie, il n'y a pas de concept similaire aux plugins asdf, et c'est une bonne chose car, dans asdf, l'installation d'une version spécifique d'un outil – disons node@20.0.0 – est un processus en deux étapes ( en installant d'abord le plugin Node.js puis la version particulière de Node). Dans mise, vous vous adressez simplement à la version unique de l'outil dont vous avez besoin, et mise se chargera de tout le gros du travail de configuration pour vous en coulisses. Dans les deux encadrés suivants, vous pouvez voir comment les commandes asdf se traduisent par mise :

 $ asdf shim-versions node
 nodejs 20.0.0
 nodejs 23.1.0

En pratique, tout cela peut être fait en une seule étape qui installe le plugin et le runtime, et définit la version :

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

La verbosité générale d'asdf est résolue avec élégance par le sucre syntaxique de mise. Néanmoins, mise est différente dans la façon dont elle gère les différentes versions, ce qui a un impact plus large sur l'ensemble de l'expérience. Dans l'image suivante, nous décrivons ce qui se passe lorsque vous exécutez une commande de nœud dans un environnement dans lequel asdf fonctionne :

mise vs. asdf for JavaScript project environment management

Ce processus a bien sûr un impact sur le temps nécessaire à l'exécution d'une commande. D'un autre côté, mise résout le même problème de sélection du bon outil en fonction de la configuration en exploitant un autre mécanisme : la variable PATH, qui est le mécanisme natif du système d'exploitation pour exécuter une commande.

Les performances sont identiques à l'exécution de la commande (par exemple, node) sans utiliser mise. Par curiosité, mise fonctionne différemment par rapport à asdf : mise traque chaque changement de répertoire de sorte que lorsque l'utilisateur change de répertoire, mise invoque un hook interne pour mettre à jour la variable PATH. Ce hook est très efficace car il est écrit en Rust et il mettra en place la variable PATH à la volée pour configurer votre environnement.

Conclusion

asdf et mise gèrent efficacement plusieurs versions d'outils, chacune avec des mécanismes uniques. mise excelle en efficacité grâce à son mécanisme de crochet PATH, tandis que asdf offre une compatibilité d'outils plus large mais avec le compromis en termes de performances de son mécanisme de cale. La compatibilité de mise avec les plugins asdf comble le fossé entre les outils.

Qu'il s'agisse de donner la priorité à la vitesse ou à la sélection, les deux outils permettent aux développeurs de gérer facilement leurs environnements, offrant un écosystème florissant pour divers packages et outils.


Installez-vous avec le suivi des erreurs moderne de LogRocket en quelques minutes :

  1. Visitez https://logrocket.com/signup/ pour obtenir un identifiant d'application.
  2. Installez LogRocket via NPM ou une balise de script. LogRocket.init() doit être appelé côté client et non côté serveur.

NPM :

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

Balise de script :

 $ asdf install nodejs latest

3.(Facultatif) Installez des plugins pour des intégrations plus approfondies avec votre pile :

  • Middleware Redux
  • middleware ngrx
  • Plugin Vuex

Commencez maintenant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn