29

Gulp 内でgulp.src、ディレクトリからすべてのフォント ファイルを選択するために使用しています。

gulp.task('copy-fonts', function() {
   gulp.src('components/**/*.{ttf,woff,eof,svg}')
   .pipe(gulp.dest('build/fonts'));
});

ただし、ディレクトリからツリー全体を再作成するのではなく、これらのフォント ファイルをすべて 1 つのディレクトリに並べて配置したいと考えていますcomponents

Gulp、Gulp Utils、npm-glob API を調べてもあまり役に立ちませんでしたが、簡単にスキップできたはずです。

これについて最善の方法は何ですか?

4

3 に答える 3

37

私はgulp-flattenを使用します:

var flatten = require('gulp-flatten');
gulp.task('copy-fonts', function() {
  gulp.src('dependencies/**/*.{ttf,woff,eof,svg}')
  .pipe(flatten())
 .pipe(gulp.dest('build/fonts'));
});

これが内部でどのように行われるかについては、https ://github.com/armed/gulp-flatten/blob/master/index.js を確認してください。

于 2014-01-16T09:15:25.107 に答える
20

別のオプションは、単純に内部のファイル パスを書き換えることですgulp.dest

var path = require('path');
gulp.task('copy-fonts', function() {
    return gulp.src('components/**/*.{ttf,woff,eof,svg}')
        .pipe(gulp.dest(function(file) {
            file.path = file.base + path.basename(file.path);
            return 'build/fonts';
        }));
});

この手法は、次の場合にも使用できますgulp-changed

var path = require('path');
var changed = require('gulp-changed');

gulp.task('copy-fonts', function() {
  var dest = 'build/fonts';
  return gulp.src('components/**/*.{ttf,woff,eof,svg}')
    .pipe(changed(function(file) {
      file.path = file.base + path.basename(file.path);
      return dest;
    }))
    .pipe(gulp.dest(dest));
});
于 2015-12-16T16:35:39.580 に答える