Récupère le nom de fichier actuel dans gulp.src()
Dans ma gorgée.fichier js je diffuse tous les fichiers HTML du dossier examples dans le dossier build.
Pour créer la tâche gulp n'est pas difficile:
var gulp = require('gulp');
gulp.task('examples', function() {
return gulp.src('./examples/*.html')
.pipe(gulp.dest('./build'));
});
Mais je ne peux pas comprendre comment récupérer les noms de fichiers trouvés (et traités) dans la tâche, ou Je ne peux pas trouver le bon plugin.
6 réponses
Je ne sais pas comment vous voulez utiliser les noms de fichiers, mais l'un d'entre eux devrait 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érez ceci n'importe où vous voulez une liste, comme ceci: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, ce que je n'ai pas utilisé, mais cela semble similaire (ça pourrait être un peu plus propre).Une autre option est
gulp-filesize, lequel affiche à la fois le fichier et sa taille.Si vous voulez plus de contrôle, vous pouvez utiliser quelque chose comme
gulp-tap, qui vous permet de fournir votre propre fonction et regardez les fichiers dans le tuyau.
J'ai trouvé ce plugin pour faire ce que j'attendais: clin d'oeil, à l'aide de
Exemple D'utilisation Simple: rechercher tous les fichiers dans le projet avec .jsx extension
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
Voici un autre moyen simple.
var es, log, logFile;
es = require('event-stream');
log = require('gulp-util').log;
logFile = function(es) {
return es.map(function(file, cb) {
log(file.path);
return cb();
});
};
gulp.task("do", function() {
return gulp.src('./examples/*.html')
.pipe(logFile(es))
.pipe(gulp.dest('./build'));
});
Vous pouvez utiliser le module gulp-filenames pour obtenir le tableau de chemins. Vous pouvez même les regrouper par espaces de noms:
var filenames = require("gulp-filenames");
gulp.src("./src/*.coffee")
.pipe(filenames("coffeescript"))
.pipe(gulp.dest("./dist"));
gulp.src("./src/*.js")
.pipe(filenames("javascript"))
.pipe(gulp.dest("./dist"));
filenames.get("coffeescript") // ["a.coffee","b.coffee"]
// Do Something With it
Pour mon cas, gulp-ignorer était parfait. En option, vous pouvez y passer une fonction:
function condition(file) {
// do whatever with file.path
// return boolean true if needed to exclude file
}
Et la tâche ressemblerait à ceci:
var gulpIgnore = require('gulp-ignore');
gulp.task('task', function() {
gulp.src('./**/*.js')
.pipe(gulpIgnore.exclude(condition))
.pipe(gulp.dest('./dist/'));
});
Si vous voulez utiliser la réponse de @ OverZealous ( https://stackoverflow.com/a/21806974/1019307 ) dans Typescript, vous devez import au lieu de require:
import * as debug from 'gulp-debug';
...
return gulp.src('./examples/*.html')
.pipe(debug({title: 'example src:'}))
.pipe(gulp.dest('./build'));
(j'ai également ajouté un title).