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

  1. Fork le dépôt.
  2. Effectuez vos modifications localement.
  3. 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!

Original Article: Voir l’original

Partager cet article