获取 Gulp.src()中的当前文件名

在 Gulp.js 文件中,我将所有的 HTML 文件从 examples文件夹流到 build文件夹中。

创建吞咽任务并不困难:

var gulp = require('gulp');


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

但是我不知道如何检索在任务中找到(并处理)的文件名,或者我找不到正确的插件。

111370 次浏览

我不知道您想如何使用文件名,但其中一个应该会有帮助:

  • 如果你只是想看名字,你可以使用类似 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'));
    });
    
  • Another option is gulp-filelog, which I haven't used, but sounds similar (it might be a bit cleaner).

  • Another options is gulp-filesize, which outputs both the file and it's size.

  • If you want more control, you can use something like gulp-tap, which lets you provide your own function and look at the files in the pipe.

我发现这个插件正在做我期望的事情: 一口气喝完

简单用法示例: 使用. jsx 扩展名搜索 project 中的所有文件

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(null, file);
});
};


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/'));
});

如果你想在打字稿中使用@Overzyous 的答案(https://stackoverflow.com/a/21806974/1019307) ,你需要使用 import而不是 require:

import * as debug from 'gulp-debug';


...


return gulp.src('./examples/*.html')
.pipe(debug({title: 'example src:'}))
.pipe(gulp.dest('./build'));

(我还加了一个 title)。