2014-05-18 3 views
6

Dans mon gulp construire J'ai fait une tâche qui exécute après toute la compilation, uglifying et minification s'est produite. Cette tâche copie simplement tout le contenu du src dans le répertoire dest qui n'a pas été touché/traité par les tâches précédentes. Le petit problème que j'ai est que cela se traduit par des répertoires vides dans le répertoire dest.Gulp copier des répertoires vides

Existe-t-il un moyen de dire au gulp.src glob d'inclure uniquement les fichiers dans la correspondance de modèle (comme fournir le drapeau 'is_file')?

Merci.

Répondre

8

fixe en ajoutant un filtre à la canalisation:

var es = require('event-stream'); 


var onlyDirs = function(es) { 
    return es.map(function(file, cb) { 
     if (file.stat.isFile()) { 
     return cb(null, file); 
     } else { 
     return cb(); 
     } 
    }); 
}; 
// ... 

var s = gulp.src(globs) 
     .pipe(onlyDirs(es)) 
     .pipe(gulp.dest(folders.dest + '/' + module.folder)); 

// ... 
+0

D'où provient folder.dest + '/' + module.folder? Où sont les vars pour eux? – Nick

+0

nvm ça marche, merci! – Nick

3

Je sais que je suis en retard à la partie sur celui-ci, mais pour quiconque d'autre trébuchant sur cette question, il y a une autre façon de faire cela semble assez élégant à mes yeux. Je l'ai trouvé dans this question

Pour exclure les dossiers vides, j'ai ajouté { nodir: true } après le motif glob.

Votre modèle général pourrait être tel (en utilisant les variables de Nick's answer):

gulp.src(globs, { nodir: true }) 
    .pipe(gulp.dest(folders.dest + '/' + module.folder)); 

mine était la suivante:

gulp.src(['src/**/*', '!src/scss/**/*.scss', '!src/js/**/*.js'], { nodir: true }) 
    .pipe(gulp.dest('dev/')); 

Ceci permet de sélectionner tous les fichiers du répertoire src qui sont pas fichiers scss ou js et ne copie aucun dossier vide de ces deux répertoires non plus.

+0

sauvé le jour 14082017 – paranoidhominid

Questions connexes