Di file gulp.js saya, saya mengalirkan semua file HTML dari examples
folder ke dalam build
folder.
Untuk membuat tugas gulp tidaklah sulit:
var gulp = require('gulp');
gulp.task('examples', function() {
return gulp.src('./examples/*.html')
.pipe(gulp.dest('./build'));
});
Tetapi saya tidak dapat menemukan cara mengambil nama file yang ditemukan (dan diproses) dalam tugas, atau saya tidak dapat menemukan plugin yang tepat.
Jawaban:
Saya tidak yakin bagaimana Anda ingin menggunakan nama file, tetapi salah satu dari ini akan membantu:
Jika Anda hanya ingin melihat namanya, Anda dapat menggunakan sesuatu seperti
gulp-debug
, yang mencantumkan detail file vinyl. Sisipkan ini di mana pun Anda menginginkan daftar, seperti:var gulp = require('gulp'), debug = require('gulp-debug'); gulp.task('examples', function() { return gulp.src('./examples/*.html') .pipe(debug()) .pipe(gulp.dest('./build')); });
Pilihan lainnya adalah
gulp-filelog
, yang belum pernah saya gunakan, tetapi terdengar serupa (mungkin sedikit lebih bersih).Opsi lainnya adalah
gulp-filesize
, yang menghasilkan file dan ukurannya.Jika Anda menginginkan lebih banyak kontrol, Anda dapat menggunakan sesuatu seperti
gulp-tap
, yang memungkinkan Anda menyediakan fungsi Anda sendiri dan melihat file di dalam pipa.sumber
gulp-tap
memungkinkan untuk mendapatkan jalur untuk setiap file, sehingga saya dapat menggunakannya untuk memperbarui daftar saya di file HTML lain.Saya menemukan plugin ini melakukan apa yang saya harapkan: gulp-using
Contoh penggunaan sederhana: Cari semua file dalam proyek dengan ekstensi .jsx
gulp.task('reactify', function(){ gulp.src(['../**/*.jsx']) .pipe(using({})); .... });
Keluaran:
[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
sumber
Berikut cara sederhana lainnya.
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')); });
sumber
es.map
melempar kesalahan:SyntaxError: Unexpected token .
return cb();
seharusnya adacb(null, file);
. Jika tidak, file akan disaring dan tidak akan berjalan lebih jauh ke rantai pipa. Info lebih lanjut, periksa dokumen untuk es.map ()Anda dapat menggunakan modul gulp-filenames untuk mendapatkan array jalur. Anda bahkan dapat mengelompokkannya berdasarkan namespace:
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
sumber
Untuk kasus saya, pengabaian-teguk itu sempurna. Sebagai opsi, Anda dapat meneruskan fungsi di sana:
function condition(file) { // do whatever with file.path // return boolean true if needed to exclude file }
Dan tugasnya akan terlihat seperti ini:
var gulpIgnore = require('gulp-ignore'); gulp.task('task', function() { gulp.src('./**/*.js') .pipe(gulpIgnore.exclude(condition)) .pipe(gulp.dest('./dist/')); });
sumber
Jika Anda ingin menggunakan jawaban @OverZealous' ( https://stackoverflow.com/a/21806974/1019307 ) di Naskah yang diketik, Anda perlu
import
bukannyarequire
:import * as debug from 'gulp-debug'; ... return gulp.src('./examples/*.html') .pipe(debug({title: 'example src:'})) .pipe(gulp.dest('./build'));
(Saya juga menambahkan a
title
).sumber
import
bukanrequire
?