web-dev-qa-db-ja.com

gulpでファイルをコピーし、親ディレクトリに基づいて名前を変更する方法を探しています

各モジュールについて、ビルドディレクトリにコピーする必要のあるファイルがいくつかあり、これから繰り返されるコードを最小限に抑える方法を探しています。

gulp.src('./client/src/modules/signup/index.js')
  .pipe(gulp.dest('./build/public/js/signup'));

gulp.src('./client/src/modules/admin/index.js')
  .pipe(gulp.dest('./build/public/js/admin'));

このようなものに:

gulp.src('./client/src/modules/(.*)/index.js')
  .pipe(gulp.dest('./build/public/js/$1'));

明らかに上記は機能しないので、これを行う方法、またはすでにこれを行うnpmはありますか?

ありがとう

91
chris

最善の方法は、次のようにファイルをソースするときにbaseを設定することです。

gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
  .pipe(gulp.dest('./build/public/js/'));

これは、相対パスを決定するための開始点としてモジュールディレクトリを使用するようgulpに指示します。

(また、すべてのJSファイルを含めたい場合は/**/*.jsを使用できます...)

131
OverZealous

答えではありませんが、検索結果でのこの質問の表示に適用されます。

Gulpのファイル/フォルダーをコピーするには

gulp.task('copy', () => gulp
  .src('index.js')
  .pipe(gulp.dest('dist'))
);
211
Kirk Strobeck
return gulp.src('./client/src/modules/(.*)/index.js')  
  .pipe(gulp.dest('./build/public/js/$1'));

私のために働いた!

5
user2977367

入力ディレクトリツリーを保持するための使用は保持されます。

.pipe(gulp.dest(function(file) {
    var src = path.resolve(SRC_FOLDER);
    var final_dist = file.base.replace(src, '');
    return DIST_FOLDER + final_dist;
}))

これを使用して、src:.src(SRC_FOLDER + '/**/*.js')に配置できます。

他の回答は私にとってはうまくいきませんでした(src()}でbase:を使用するなど、一部のプラグインはディレクトリツリーを平坦化するためです。

3
brnmonteiro

ファイルを並行してコピーする

gulp.task('copy', gulp.parallel(
() =>  gulp.src('*.json').pipe(gulp.dest('build/')),
() =>  gulp.src('*.ico').pipe(gulp.dest('build/')),
() =>  gulp.src('img/**/*').pipe(gulp.dest('build/img/')),
)
);
0
Dan Alboteanu