Build d’application node-webkit avec grunt

April 23, 2015

Avec node-webkit-builder vous allez pouvoir build votre application node-webkit en ligne de commande assez simplement. Le module se charge de télécharger les exécutables, de créer votre dossier de release et build votre application. Mieux encore, ce processus peut être simplifié avec un plugin grunt. Nous allons donc voir comment utiliser au mieux ce plugin pour avoir votre application disponible sur les diverses plateformes.

Import de node-webkit-builder

Commençons par creer notre fichier package.json, ce fichier servira de base pour nos dépendance nodeJs nécessaire au build, c’est a dire notre plugin grunt.

 

{ 
	"name": "node-webkit-starter-pack", 
	"description": "Beggins with node-webkit using grunt for packaging", 
	"devDependencies": { 
		"grunt": "latest", 
		"grunt-node-webkit-builder": "latest" 
	}
}

Globalement il s’agit d’un fichier de dépendance classique pour nodeJs, on spécifie que l’on a besoin de grunt et grunt-node-webkit-builder pour pouvoir utiliser nos build automatiques.

Pour installer nos dépendance il suffit d’un simple

npm install

Maintenant nous allons voir comment configurer notre plugin grunt pour répondre a nos attentes.

 

Configuration de node-webkit-builder

Pour configurer grunt nous allons remplir un fichier Gruntfile.js. Voici ci dessous une configuration possible notre plugins :

 

module.exports = function(grunt) {

    grunt.initConfig({
        nodewebkit: {
            options: {
                buildDir: './build', // where the build is save
                platforms: ['win', 'osx', 'linux'], // platform to build
                buildType : "versioned",
                macZip: false // app isn't zip on mac but it improve speed app
            },
            src: './app/**/*' // Your node-webkit app
        },
      });
      
      grunt.loadNpmTasks('grunt-node-webkit-builder');
      grunt.registerTask('default', ['nodewebkit']);

};

Nous avons donc défini pour node-webkit que notre application se situe dans le sous dossier app. De même nous avons mis en place certaines configuration.

De ce fait a chaque build nous retrouverons nos résultats dans les sous dossier ./build/appName – Version/platform . Le fait d’avoir mis macZip a false entraînera un fichier plus lourd sur macOs mais le temps de démarrage sera largement amélioré.

Maintenant pour générer nos build il suffit d’entre la commande suivante :

grunt

Je vais éviter de faire une liste des options disponible avec le plugins : pour voir l’ensemble de celle ci vous pouvez vous rendre ici.

Il faut également savoir que l’on peut surcharger le fichier de configuration de node webkit par plateforme grâce a l’option platformOverrides.

J’ai également mis en place un dépôt github avec la structure de base de faire vous permettant de n’avoir qu’a changer les config de base et coder votre application node-webkit. Il est disponible ici.

Je vous invite a jouer avec toutes les options de node webkit,  que ce soit dans le package.json contenu au niveau de l’application (dans le dossier app du coup) ou au niveau du fichier Gruntfile.js. Avec cet outil le packaging de vos applications devrait être plus rapide et simple. Pour ma part je vais m’en servir sur mon projet avec node-webkit.

 

comments powered by Disqus