146 votes

Récupère le nom du fichier actuel dans gulp.src ()

Dans mon fichier gulp.js, je diffuse tous les fichiers HTML du dossier examples dans le dossier build .

Créer la tâche d'abat n'est pas difficile:

 var gulp = require('gulp');

gulp.task('examples', function() {
    return gulp.src('./examples/*.html')
        .pipe(gulp.dest('./build'));
});
 

Mais je n'arrive pas à comprendre comment récupérer les noms de fichiers trouvés (et traités) dans la tâche, ou je ne trouve pas le bon plugin.

Modifier:

Grâce à @OverZealous, le plugin gulp-tap résout le problème:

 var gulp = require('gulp');
var path = require('path');
var tap = require('gulp-tap');

gulp.task('examples', function() {
    return gulp.src('./examples/*.html')
        .pipe(tap(function (file,t) {
            console.log(path.basename(file.path));
            // Do something with the file name
        }))
        .pipe(gulp.dest('./build'));
    });
 

182voto

OverZealous Points 14115

Je ne suis pas sûr de savoir comment vous voulez utiliser les noms de fichier, mais l'un de ceux-ci devraient vous aider:

  • Si vous voulez juste pour voir les noms, vous pouvez utiliser quelque chose comme gulp-debug, qui répertorie les détails de l'vinyle fichier. Insérer n'importe où vous voulez une liste, comme suit:

    var gulp = require('gulp'),
        debug = require('gulp-debug');
    
    gulp.task('examples', function() {
        return gulp.src('./examples/*.html')
            .pipe(debug())
            .pipe(gulp.dest('./build'));
    });
    
  • Une autre option est - gulp-filelog, que je n'ai pas utilisé, mais des sons similaires (peut-être un peu plus propre).

  • Une autre des options est - gulp-filesize, sorties à la fois le fichier et sa taille.

  • Si vous voulez plus de contrôle, vous pouvez utiliser quelque chose comme gulp-tap, ce qui vous permet de fournir votre propre fonction et regardez les fichiers dans le tuyau.

25voto

Vikram Points 1363

J'ai trouvé ce plugin faire ce que j'attendais: gulp-using

Exemple d'utilisation simple: Rechercher dans tous les fichiers du projet avec l'extension .jsx

 gulp.task('reactify', function(){
        gulp.src(['../**/*.jsx']) 
            .pipe(using({}));
        ....
    });
 

Sortie:

 [gulp] Using gulpfile /app/build/gulpfile.js
[gulp] Starting 'reactify'...
[gulp] Finished 'reactify' after 2.92 ms
[gulp] Using file /app/staging/web/content/view/logon.jsx
[gulp] Using file /app/staging/web/content/view/components/rauth.jsx
 

13voto

Nick Points 192

Voici un autre moyen simple. (café)

 es = require 'event-stream'
log = require('gulp-util').log

logFile = (es) ->
  es.map (file, cb) ->
    log file.path
    cb()

gulp.task "do", ->
  gulp.src('./examples/*.html')
  .pipe(logFile(es))
  .pipe(gulp.dest('./build'))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X