2016-12-07 2 views
0

Le code source est utilisé pour 2 projets, Chaque projet a un code commun. Je souhaite ignorer de manière conditionnelle un module/dossier/répertoire via une tâche de gulp.Conditionnellement Ignorer les fichiers dans gulp.src

Quand je ne le suit fonctionne parfaitement

return gulp.src(
    config.appMarkupFiles 
    '!app/settings', '!app/settings/**' 
) 

Cependant, je veux le faire sous conditions. J'ai aussi essayé le code suivant en utilisant le filtre gulp qui ne fonctionne pas pour moi.

var isQA = $.yargs.argv.stage === 'qa'; 

var filterSettings = $.filter(['!app/settings{, /**}']) 
return gulp.src(
    config.appMarkupFiles 
) 
.pipe(($.if(isQA,$.filter(filterSettings))) 

folder structure for reference only.

Répondre

1

Votre gulpfile est juste JavaScript afin que vous puissiez utiliser le ternary operator pour exclure conditionnellement fichiers gulp.src():

var isQA = $.yargs.argv.stage === 'qa'; 

gulp.task('default', function() { 
    return gulp.src([config.appMarkupFiles].concat((isQA) ? ['!app/settings{,/**}'] : [])) 
    .pipe(gulp.dest('dist')); 
}); 

En utilisant gulp-filter fonctionne, mais vous avez eu deux erreurs dans votre code:

  1. Il y a un espace inutile dans !app/settings{, /**} et
  2. Vous appliquez deux fois $.filter.

est ici une solution de travail en utilisant gulp-filter:

var isQA = $.yargs.argv.stage === 'qa'; 

gulp.task('default', function() { 
    return gulp.src(config.appMarkupFiles) 
    .pipe($.if(isQA, $.filter(['!app/settings{,/**}']))) 
    .pipe(gulp.dest('dist')); 
}); 
+0

Pour une raison quelconque, cela ne fonctionne pas. J'ai essayé l'option que vous avez suggérée alternativement. Avec pas de chance pour le moment. –

+0

Vous devrez être un peu plus précis si vous voulez que je vous aide. –

+0

Il n'ignore pas tous les fichiers de balisage. pas seulement le dossier de paramètres. Si je le commente, tous les fichiers de balisage sont traités sur www. –