Découvrez UnJS : des outils JavaScript agnostiques aux frameworks
Si vous avez utilisé Nuxt ou Nitro, vous avez déjà bénéficié d’UnJS sans le savoir. Mais l’écosystème UnJS est bien plus qu’un simple détail d’implémentation de Nuxt — c’est une collection croissante de bibliothèques JavaScript agnostiques aux frameworks que tout développeur peut utiliser directement, quel que soit son stack technologique.
Points clés à retenir
- UnJS est une collection de packages JavaScript petits, composables et orientés TypeScript, conçus pour résoudre des problèmes d’infrastructure spécifiques sans verrouillage technologique.
- Chaque package UnJS est indépendant, fonctionne sur plusieurs environnements d’exécution (Node.js, Deno, Bun, edge), et peut être utilisé en dehors de Nuxt ou de tout autre méta-framework.
- Les outils clés incluent Nitro (moteur serveur), h3 (framework HTTP), ofetch (wrapper fetch), unplugin (système de plugins unifié), unbuild (bundler de bibliothèques), unimport (auto-imports), et unenv (polyfills d’environnement d’exécution).
- Les bibliothèques agnostiques aux frameworks réduisent les frictions lors des mises à jour, améliorent la portabilité et permettent aux équipes d’adopter uniquement les éléments dont elles ont besoin.
Qu’est-ce que l’écosystème UnJS ?
UnJS est une collection de packages JavaScript et TypeScript petits et composables, axés sur la résolution de problèmes d’infrastructure spécifiques. Chaque package fait une chose et la fait bien : gestion HTTP, requêtes fetch, outillage de build, auto-imports, polyfills d’environnement. Aucun d’entre eux ne vous oblige à adopter un framework particulier.
La philosophie est simple : construire des primitives réutilisables qui fonctionnent sur différents environnements d’exécution et outils. C’est pourquoi les packages UnJS apparaissent aussi bien dans Nuxt, Nitro, les plugins Vite que dans des outils CLI autonomes. L’écosystème fournit la plomberie, et c’est à vous de décider ce que vous construisez avec.
Pourquoi les bibliothèques JavaScript agnostiques aux frameworks sont importantes
Le verrouillage technologique a un coût réel. Les équipes qui construisent des outils partagés autour d’un framework spécifique finissent par faire face à des cycles de mise à jour douloureux, des composants incompatibles ou des bibliothèques abandonnées lorsque l’écosystème évolue. Les bibliothèques JavaScript agnostiques aux frameworks contournent ce problème en restant neutres au niveau du cœur.
Les outils UnJS sont portables par conception. Ils fonctionnent dans Node.js, Deno, Bun et les environnements d’exécution edge. Ils sont livrés avec un support TypeScript solide dès le départ. Et comme chaque package est indépendant, vous n’installez que ce dont vous avez besoin.
Discover how at OpenReplay.com.
Outils UnJS essentiels pour les développeurs JavaScript
Voici un aperçu pratique des packages les plus utiles à connaître :
Nitro — Le moteur serveur
Nitro est un moteur serveur qui compile votre application en une sortie portable déployable sur de nombreux fournisseurs d’hébergement via des presets de déploiement. Il gère le routage et les middlewares, et vous n’avez pas besoin de Nuxt pour l’utiliser.
h3 — Framework HTTP minimaliste
h3 est le framework HTTP utilisé par Nitro. h3 est couramment utilisé avec Nitro pour alimenter les API serveur et les middlewares. Il est minuscule, composable et agnostique à l’environnement d’exécution — une base solide pour construire des API ou des middlewares sans la surcharge d’un framework.
ofetch — Wrapper fetch moderne
ofetch est le client fetch maintenu dans l’écosystème UnJS (remplaçant l’ancien nom ohmyfetch). Il ajoute des valeurs par défaut intelligentes comme le parsing JSON automatique, la gestion des erreurs et des intercepteurs — sans le poids d’une bibliothèque cliente HTTP complète.
unplugin — Système de plugins unifié
unplugin vous permet d’écrire un plugin une seule fois et de l’exécuter sur Vite, Rollup, webpack et esbuild. C’est ce qui rend l’outillage JavaScript modulaire véritablement portable entre les outils de build.
unbuild — Bundler de bibliothèques
unbuild est un bundler sans configuration pour les bibliothèques JavaScript, construit sur Rollup. Il gère les sorties ESM et CJS, les déclarations de types et le bundling avec une configuration minimale — idéal pour publier des packages.
unimport — Utilitaires d’auto-import
unimport fournit l’infrastructure d’auto-import utilisée par Nuxt et d’autres outils. Vous pouvez l’intégrer directement dans n’importe quel projet Vite ou Rollup.
unenv — Polyfills d’environnement d’exécution
unenv normalise les différences d’environnement d’exécution entre Node.js et les environnements non-Node en fournissant des polyfills compatibles Node pour d’autres environnements d’exécution. C’est un bloc de construction clé pour du code serveur portable.
Utiliser UnJS directement
La plupart des développeurs rencontrent UnJS indirectement. Mais ces packages sont publiés indépendamment sur npm et sont totalement utilisables en dehors de Nuxt ou de tout méta-framework. Si vous construisez un serveur, un outil CLI, une bibliothèque partagée ou un plugin de build, il y a probablement un package UnJS qui gère l’infrastructure pour que vous n’ayez pas à le faire.
Conclusion
L’écosystème UnJS ne vous dira pas quel framework utiliser. C’est justement le but. Il vous fournit des blocs de construction bien testés et orientés TypeScript, et vous laisse prendre les décisions architecturales. Que vous travailliez avec Nuxt, que vous construisiez un serveur autonome avec Nitro et h3, ou que vous publiiez votre propre bibliothèque avec unbuild, UnJS fournit la base portable et composable qui maintient votre outillage flexible et vos options ouvertes.
FAQ
Oui. Chaque package UnJS est publié indépendamment sur npm et conçu pour fonctionner de manière autonome. Vous pouvez installer et utiliser des outils comme h3, ofetch ou unbuild dans n'importe quel projet JavaScript ou TypeScript sans Nuxt ou tout autre méta-framework.
Les packages UnJS sont conçus pour fonctionner sur Node.js, Deno, Bun et les environnements d'exécution edge comme Cloudflare Workers et Vercel Edge Functions. Le package unenv gère spécifiquement le polyfilling des différences d'environnement d'exécution pour que votre code reste portable.
unplugin fournit une API unifiée qui vous permet d'écrire un seul plugin et de l'exécuter sur Vite, Rollup, webpack et esbuild. Au lieu de maintenir des implémentations de plugins séparées pour chaque outil de build, vous écrivez une fois et unplugin gère la couche d'adaptation.
ofetch remplit un rôle similaire mais est plus léger et plus moderne. Il encapsule l'API fetch native avec des valeurs par défaut intelligentes comme le parsing JSON automatique, la logique de retry et des intercepteurs. Il fonctionne sur tous les environnements d'exécution sans polyfills supplémentaires, ce qui en fait une alternative pratique pour la plupart des cas d'usage.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.