2016-07-01 2 views
0

Dans un but d'harmoniser le style d'une application SPA, je veux définir une variable de style somme dans un fichier JSON et l'utiliser dans ma compilation moins.Comment fusionner 2 vinyl-fs avec gulp pour ne pas créer de fichier temporaire à partir d'une tâche de pré-compilation partielle

Fondamentalement, il peut fonctionner comme ceci:

gulp.src('variables.json') 
    .pipe(function() { 
     // process to create a less file from json 
    }) 
    .pipe(gulp.dest('less/_variable.json.less')) 
    .on('end', function(){ 
     gulp.src(['less/*.less', '!less/_*.less']) 
      .pipe(plugins.less()) 
      .pipe(gulp.dest('css')) 
    }); 

Et en moins:

@import "_variables.json.less"; 
// Other things 

Est-il possible de le faire sans créer un fichier intermédiaire avant de faire moins compilation? Est-il possible de fusionner le résultat de la première tâche et la source Less dans un même vinyle fs pour faire la compilation Less?

Cordialement.

+1

Ce n'est pas une question de quoi que ce soit "fusion" dans gulp. 'less' résout par défaut les instructions' @ import' dans le système de fichiers. Vous devrez écrire un plugin ['less'] (http://lesscss.org/usage/#plugins) qui fournit un [' FileManager'] (https://github.com/less/less.js/blob /master/lib/less/environment/file-manager-api.js) qui charge les fichiers d'un flux 'vinyl' au lieu du système de fichiers. Des choses similaires sont faites par les plugins 'npm-import' et' bower-resolve' qui chargent les fichiers des paquets 'npm' et' bower' respectivement. –

Répondre

0

Merci sven-schoenung à vous commenter. Mais je ne veux pas commencer le développement d'un plugin Less pour l'instant ... Donc, j'ai adopté une autre approche. J'ai développé un plugin gulp qui prétraite le fichier less pour correspondre à une directive @json-import afin d'injecter les variables de génération dans le fichier vinyle Less.

Cela semble fonctionner bien. Donc je l'ai publié sur NPM.

https://www.npmjs.com/package/gulp-less-json-import