Salut ! Aujourd’hui, je vais te montrer comment transformer ton script Node.js en un exécutable autonome grâce à pkg. Pas de blabla compliqué, juste un tuto simple et chaleureux pour que tu puisses facilement partager ton appli sans demander à tes utilisateurs d’installer Node.js.
1. C’est quoi pkg ?
Imagine que tu puisses emballer ton application Node.js avec tout ce dont elle a besoin, y compris une version de Node intégrée. Eh bien, c’est exactement ce que fait pkg ! Ça rend ton appli super portable et prête à être lancée sur n’importe quel ordinateur, que ce soit sous Windows, macOS ou Linux. Plutôt cool, non ?
2. Ce dont tu as besoin
Avant de commencer, assure-toi d’avoir :
- Node.js et npm : Vérifie leur installation avec :
node -v npm -v
- pkg installé globalement : Si ce n’est pas encore fait, installe-le avec :
npm install -g pkg
3. Configurer ton projet dans package.json
Pour éviter de te répéter à chaque fois, tu peux centraliser la configuration de pkg dans ton fichier package.json. C’est très pratique ! Voici ce qu’il faut ajouter :
- bin : Indique le point d’entrée de ton appli (par exemple,« bin »: « index.js »).
- pkg : La section dédiée pour définir :
- assets : Les fichiers ou dossiers à inclure (exemple : « assets »: [« public/**/* »]).
- targets : Les plateformes cibles et la version de Node.js à utiliser (exemple : [« node14-win-x64 », « node14-linux-x64 », « node14-macos-x64 »]).
Exemple complet :
{
"name": "mon-appli",
"version": "1.0.0",
"bin": "index.js",
"pkg": {
"assets": [
"public/**/*"
],
"targets": [
"node14-win-x64",
"node14-linux-x64",
"node14-macos-x64"
]
},
"scripts": {
"build": "pkg . --output dist/mon-appli"
}
}
Petit bonus : grâce à la section scripts, tu pourras lancer la compilation avec simplement npm run build. Pratique, non ?
4. Un exemple simple pour démarrer
Créons un petit projet ensemble. Commence par créer un fichier index.js avec ce contenu :
// index.js
console.log("hello world");
Ce petit script affiche « hello world » dans la console. Dans un vrai projet, tu ajouteras bien sûr toute la logique de ton appli.
5. Compiler ton appli avec pkg
C’est l’heure de passer à l’action !
-
Place-toi dans le répertoire de ton projet (celui qui contient index.js et package.json).
-
Lance la compilation. Tu as deux options :
-
En te basant sur package.json :
pkg .
Cette commande va lire ta configuration et générer les exécutables pour chaque plateforme que tu as indiquée.
-
En précisant tout en ligne de commande :
pkg index.js --targets node14-win-x64,node14-linux-x64,node14-macos-x64 --output mon-appli
Avec –output, tu choisis le nom et l’emplacement de ton exécutable.
-
-
Vérifie les fichiers générés dans le dossier courant ou dans le dossier spécifié (par exemple, dist/mon-appli).
Petit conseil : sur Linux ou macOS, n’oublie pas de rendre l’exécutable exécutable avec chmod +x mon-appli.
6. Tester et déployer ton exécutable
Tester ton appli
- Sur Linux/macOS :
./mon-appli-linux
- Sur Windows : Lance le fichier mon-appli-win.exe en double-cliquant dessus ou via l’invite de commandes.
Si tout se passe bien, tu verras s’afficher :
hello world
7. Quelques limites et alternatives
Même si pkg est super pratique, il y a quelques petites limites à connaître :
- Imports dynamiques : Les require avec des variables peuvent poser problème. Préfère les imports statiques.
- Modules natifs : Certains modules qui utilisent du code C/C++ pourraient ne pas fonctionner comme prévu.
- Taille de l’exécutable : Comme le runtime Node.js est embarqué, l’exécutable peut être un peu volumineux.
Si jamais ces points te posent souci, tu pourras explorer des alternatives comme ncc ou même penser à la containerisation avec Docker.
En Conclusion :
Avec pkg, tu dis adieu aux galères d’installation de Node.js sur chaque machine ! En quelques commandes, ton script se transforme en un exécutable autonome, prêt à tourner sur Windows, macOS ou Linux. Certes, il y a quelques limites – surtout avec les imports dynamiques ou certains modules natifs –, mais pour la majorité de tes projets, c’est la solution idéale pour simplifier la distribution de ton appli. Alors, prêt à compiler et partager ton projet sans prise de tête ? À toi de jouer !