各モジュールについて、ビルドディレクトリにコピーする必要のあるファイルがいくつかあり、これから繰り返されるコードを最小限に抑える方法を探しています。
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はありますか?
ありがとう
最善の方法は、次のようにファイルをソースするときにbase
を設定することです。
gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
.pipe(gulp.dest('./build/public/js/'));
これは、相対パスを決定するための開始点としてモジュールディレクトリを使用するようgulp
に指示します。
(また、すべてのJSファイルを含めたい場合は/**/*.js
を使用できます...)
答えではありませんが、検索結果でのこの質問の表示に適用されます。
Gulpのファイル/フォルダーをコピーするには
gulp.task('copy', () => gulp
.src('index.js')
.pipe(gulp.dest('dist'))
);
return gulp.src('./client/src/modules/(.*)/index.js')
.pipe(gulp.dest('./build/public/js/$1'));
私のために働いた!
入力ディレクトリツリーを保持するための使用は保持されます。
.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:
を使用するなど、一部のプラグインはディレクトリツリーを平坦化するためです。
ファイルを並行してコピーする
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/')),
)
);