Node – Compiler un exécutable avec pkg
Cet article est en quelque sorte une suite de celui sur commander où j’expliquais comment créer un script en invite de commande. Ces scripts de développement permettent de sauver beaucoup de temps et d’éviter au maximum les erreurs humaines lors de l’exécution de tâches manuelles et répétitives. Aujourd’hui, on va voir comment on peut distribuer ces scripts à l’équipe en les compilant en exécutable avec pkg.
C’est quoi pkg?
Pkg se définit comme une interface d’invite de commande permettant de packager un script node pour le partager sans que les utilisateurs n’aient à installer node. De plus, c’est une façon efficace de cacher ses sources.
J’ai dit que c’était multi-plateforme? Awesome…
Créons un script
Depuis un répertoire vide, créer un nouveau projet node en exécutant npm init -y. Puis, nous allons créer un script, donc installer aussi commander avec npm i commander.
Ensuite, créons une application commander simple et testons-la.
test.js
1 2 3 4 5 6 7 8 9 10 |
const package = require('./package.json'); const commander = require('commander'); const program = new commander.Command(); program.version(package.version); /* Options here! */ program.parse(process.argv); console.log('Done!'); |
Pour l’exécuter, affichons l’aide générée automatiquement :
1 |
node test.js -h |
Résultat :
1 2 3 4 5 |
Usage: test [options] Options: -V, --version output the version number -h, --help output usage information |
Commander est donc fonctionnel, compilons le tout en exécutable.
Ajouter pkg au projet
Pour installer pkg, exécuter npm i pkg. Puis, afin que la librairie puisse savoir quel fichier doit être compilé, il faut ajouter une propriété bin à notre package.json.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "name": "pkg-test", "version": "1.0.0", "description": "", "main": "test.js", "bin": "test.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "commander": "^4.0.1", "pkg": "^4.4.0" } } |
Boom! C’est tout!
Compiler le programme
Ici, soit vous ajoutez un script au package.json, soit vous exécutez la commande manuellement. Une fois lancée comme ci-dessous, pkg va créer des exécutable pour linux, windows et mac.
1 |
pkg . |
De mon côté, ça a créé :
pkg-test-win.exe
pkg-test-macos
pkg-test-linux
Pour tester, on peut essayer de voir si commander répond toujours :
1 |
pkg-test-win -h |
Vous devriez voir l’aide générée par commander.
Conclusion
Il peut y avoir une multitude de raison pour lesquelles il peut être pratique d’avoir un exécutable au lieu des sources. Par contre, il faut savoir que node est packagé avec l’application, donc l’exécutable sera nécessairement plus gros. Par exemple, le script de cet article pèse environ 45 mo. Probablement impossible de l’envoyer par courriel…
Aujourd’hui, vous avez appris à créer des exécutables multi-plateformes à partir d’une application node. Il y a quelque mois, j’avais aussi fait un article sur comment créer une application native depuis une application Angular. Je vous invite à le lire ou le relire, et aussi à partager dans vos réseaux sociaux.
Merci de nous suivre chaque semaine! Cheers 😀
Commentaires
Laisser un commentaire