Получить текущее имя файла в gulp.src()
в мой глоток.js-файл я транслирую все HTML-файлы из .
создать задачу глотка не сложно:
var gulp = require('gulp');
gulp.task('examples', function() {
return gulp.src('./examples/*.html')
.pipe(gulp.dest('./build'));
});
но я не могу понять, как получить имена файлов, найденные (и обработанные) в задаче, или я не могу найти правильный плагин.
6 ответов:
Я не уверен, как вы хотите использовать имена файлов, но один из них должен помочь:
если вы просто хотите, чтобы увидеть имена, вы можете использовать что-то вроде
gulp-debug
, в котором перечислены детали винилового файла. Вставьте это в любом месте вы хотите список, например так:var gulp = require('gulp'), debug = require('gulp-debug'); gulp.task('examples', function() { return gulp.src('./examples/*.html') .pipe(debug()) .pipe(gulp.dest('./build')); });
другой вариант:
gulp-filelog
, который я не использовал, но звучит похоже (это может быть немного уборщик.)другой вариант--
gulp-filesize
, который выводит как файл, так и его размер.если вы хотите больше контроля, вы можете использовать что-то вроде
gulp-tap
, что позволяет вам предоставить свою собственную функцию и посмотреть на файлы в трубе.
я обнаружил, что этот плагин делает то, что я ожидал:глоток-с помощью
простой пример использования: поиск всех файлов в проект .расширение jsx
gulp.task('reactify', function(){ gulp.src(['../**/*.jsx']) .pipe(using({})); .... });
выход:
[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
вот еще один простой способ.
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')); });
можно использовать gulp-имена файлов модуль для получения массива путей. Вы даже можете сгруппировать их по пространствам имен:
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
для моего случая залпом-игнорировать был идеальным. Как вариант вы можете передать функцию там:
function condition(file) { // do whatever with file.path // return boolean true if needed to exclude file }
и задача будет выглядеть так:
var gulpIgnore = require('gulp-ignore'); gulp.task('task', function() { gulp.src('./**/*.js') .pipe(gulpIgnore.exclude(condition)) .pipe(gulp.dest('./dist/')); });
если вы хотите использовать @OverZealous ' ответ (https://stackoverflow.com/a/21806974/1019307) в Typescript, вам нужно
import
вместоrequire
:import * as debug from 'gulp-debug'; ... return gulp.src('./examples/*.html') .pipe(debug({title: 'example src:'})) .pipe(gulp.dest('./build'));
(Я также добавил
title
).