web-dev-qa-db-ja.com

Gulp.js-gulp.dest()のgulp.src()からのパスを使用する

LESSを介してさまざまなフォルダーから多数のファイルをパイプし、それらを元のソースに基づいてフォルダーに出力するgulpタスクを作成しようとしています。このフォルダー構造を考慮してください。

Project
+-- /Module_A
|   +- /less
|   |  +- a.less
|   +- a.css
|
+-- /Module_B
    +- /less
    |  +- b.less
    +- b.css

これが私のgulpfileです。

var gulp = require('gulp');
var gutil = require('gulp-util');
var less = require('gulp-less');

gulp.task('compileLess', function () {
  gulp.src('./*/less/*.less')
    .pipe(less())
    .pipe(gulp.dest( ??? ));
});

gulp.task('default', ['compileLess']);

Gulp.dest()はパスが渡されることを期待していますが、私の例では、パスはソースファイルに基づいて異なります。では、ソースからパスを取得して変更し、gulp.dest()に渡すにはどうすればよいですか?

それとも私はこれについて間違った方法で行っていますか?

54
Adam

gulp-rename をご覧ください

かなり:

gulp.src('./*/less/*.less')
  .pipe(less())
  .pipe(rename(function(path){
    // Do something / modify the path here         
  }))
  .pipe(gulp.dest('./finalRootDestination'))

最終出力ディレクトリを指すgulp.destを残​​しますが、gulp-renameへのコールバック内で必要なロジックに基づいて個々のファイルパスをオンザフライで変更します。

29
Mangled Deutz

srcbaseオプションを設定すると、lessファイルの元のパスが維持されます。

gulp.task('compileLess', function () {
  gulp.src('./*/less/*.less', {base: './'})
    .pipe(less())
    .pipe(gulp.dest( './dist' ));
});

./dist宛先は何でもかまいません。ファイル構造を配置する場所。

追加情報はこちら: https://github.com/wearefractal/glob-stream#options

86
CoryDorning