在gulp.src()中获取当前文件名

时间:2014-02-16 03:29:39

标签: gulp

在我的gulp.js文件中,我将所有HTML文件从examples文件夹传输到build文件夹。

创建gulp任务并不困难:

var gulp = require('gulp');

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

但我无法弄清楚如何检索任务中找到(和处理)的文件名,或者我找不到合适的插件。

5 个答案:

答案 0 :(得分:163)

我不确定你想如何使用文件名,但其中一个应该有用:

  • 如果您只想查看名称,可以使用类似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之类的东西,它可以让您提供自己的功能并查看管道中的文件。

答案 1 :(得分:21)

我发现这个插件正在做我期待的事情:gulp-using

简单用法示例:使用.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

答案 2 :(得分:8)

这是另一种简单的方法。

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

答案 3 :(得分:6)

您可以使用gulp-filenames模块获取路径数组。 您甚至可以按命名空间对它们进行分组:

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 

答案 4 :(得分:0)

如果您想在Typescript中使用@OverZealous'回答(https://stackoverflow.com/a/21806974/1019307),则需要.mytoast { width: 100%; text-align: right; } 代替import

require

(我还添加了import * as debug from 'gulp-debug'; ... return gulp.src('./examples/*.html') .pipe(debug({title: 'example src:'})) .pipe(gulp.dest('./build')); )。