Packager les applications web full‑stack en un seul binaire avec l'outil EXE
Introduction
Lorsque vous construisez une application web moderne, les développeurs jonglent souvent avec plusieurs runtimes, outils de build et plateformes de déploiement. Si vous devez conserver des fonctionnalités côté serveur telles que le SSR, les points d’accès API ou l’authentification, regrouper toute l’application dans un exécutable léger peut simplifier la distribution.
EXE – abréviation d’Executable – est un outil gratuit sous licence MIT qui transforme n’importe quel framework full‑stack (SvelteKit, Nuxt, TanStack) en un seul binaire sans dépendances d’exécution. En utilisant Bun pour la phase de build, EXE conserve les capacités natives de serveur de votre framework tout en fournissant un binaire instantané et multiplateforme.
Pourquoi EXE ? * Simplicité – Pas besoin d’installer Docker ou Node à l’exécution. * Sécurité – S’exécute localement, gardant les données utilisateur privées. * Portabilité – Le binaire fonctionne sur Windows, macOS, Linux et même sur des appareils embarqués. * Vitesse – Une seule commande lance l’application ; pas d’orchestration de conteneurs.
Fonctionnalités clés
| Fonction | Détail |
|---|---|
| Aucune dépendance d’exécution | Votre application est livrée sous un seul binaire statique – pas de fichiers ou de dépendances supplémentaires sur l’hôte. |
| Préservation full‑stack | Conserve le SSR, les routes API, les middlewares serveur et l’authentification intactes. |
| Multiplateforme | Génère des binaires pour Windows, Linux, macOS et les architectures ARM. |
| Compagnon Docker | Si vous compilez pour linux-x64, EXE génère automatiquement un Dockerfile pour un auto‑hébergement rapide via Fly.io ou tout moteur de conteneur. |
| Plugins CLI & adaptateurs | Adaptateurs séparés pour SvelteKit (@jesterkit/exe-sveltekit) et support expérimental pour Nuxt/TanStack. |
| Open‑source & extensible | Hébergé sur GitHub, contributions bienvenues ; les plugins peuvent être écrits pour d’autres frameworks. |
Démarrage
Voici un exemple de configuration pour SvelteKit. L’utilisation de Nuxt ou TanStack suit un flux similaire.
# 1️⃣ Installer l'adaptateur
npm install @jesterkit/exe-sveltekit
Ajoutez-le à svelte.config.js:
// svelte.config.js
import adapter from '@jesterkit/exe-sveltekit';
export default {
kit: {
adapter: adapter({
binaryName: 'my-app',
}),
},
};
Exécutez le pipeline de build:
npm run build
# L'exécutable se trouve désormais dans ./dist/my-app
./dist/my-app
Votre application démarrera sur http://localhost:3000 et se comportera exactement comme la build de production standard de SvelteKit, mais désormais en un seul binaire.
Paramètres avancés
| Option | Utilisation |
|---|---|
--target |
linux-x64, win32-x64, darwin-arm64, etc. |
--output |
Emplacement personnalisé pour le binaire compilé. |
--docker |
Force la génération d’un Dockerfile même sans linux-x64. |
Exemple – Construire un binaire Linux et générer un Dockerfile :
npm run build -- --target=linux-x64 --docker
Déploiement via Fly.io
Si vous ciblez linux-x64, l’assistant fly launch fournit une configuration Fly.io prête à l’emploi. Exécutez simplement :
fly launch
Fly gère l’hébergement, l’affectation de domaine et les rechargements sans temps d’arrêt.
Cas d’utilisation
| Scénario | Avantage |
|---|---|
| vitrine démonstration SaaS | Permet aux clients de créer une copie locale pour des essais rapides. |
| applications centrées sur la confidentialité | Stocke les données sur l’appareil de l’utilisateur sans les exposer à un serveur distant. |
| outils auto‑hébergés | Distribue un seul binaire aux administrateurs pour l’installation sur des serveurs internes. |
| prototypage rapide | Évite les temps de build Docker et teste instantanément les modifications de fonctionnalités. |
Communauté & extension
L’écosystème EXE est en croissance. Si vous utilisez un framework non répertorié ci‑dessus, n’hésitez pas à ouvrir une issue ou contribuer un adaptateur. Comme le cœur est écrit en Rust et utilise Bun pour l’assemblage, il évolue bien et peut intégrer de nouvelles fonctionnalités telles que :
- Binaries mis à jour automatiquement
- Support natif de plugins
- Bundlers spécifiques à la plateforme (WebAssembly, ARM64, etc.)
Contribution
- Fork le dépôt.
- Effectuez vos modifications localement.
- Soumettez une PR décrivant le problème et la solution.
Nous apprécions les PRs petites et ciblées. Le projet est sous licence MIT, vous pouvez donc même utiliser les binaires dans un logiciel commercial.
Licence
EXE est sous licence MIT – n’hésitez pas à l’adapter et à le livrer dans votre produit.
Résumé
EXE comble le fossé entre l’écosystème riche des frameworks full‑stack et la simplicité d’un seul binaire. Il élimine le besoin de conteneurs Docker, de runtimes Node ou de scripts de déploiement complexes tout en conservant toutes les fonctionnalités côté serveur. Que vous construisiez une démo, un SaaS auto‑hébergé ou un outil centré sur la confidentialité, EXE vous offre une voie sans friction pour livrer votre application web sur toute plateforme.
Bon packaging!