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
).