Pour chaque module, j'ai des fichiers qui doivent être copiés dans le répertoire de construction, et je cherche un moyen de minimiser le code répété:
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'));
à quelque chose comme ça:
gulp.src('./client/src/modules/(.*)/index.js')
.pipe(gulp.dest('./build/public/js/$1'));
Évidemment, ce qui précède ne fonctionne pas, y a-t-il un moyen de faire cela, ou un npm qui le fait déjà?
Merci
Le meilleur moyen est de configurer votre base
lors de l’approvisionnement en fichiers, comme ceci:
gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
.pipe(gulp.dest('./build/public/js/'));
Ceci indique à gulp
d'utiliser le répertoire des modules comme point de départ pour déterminer les chemins relatifs.
(En outre, vous pouvez utiliser /**/*.js
si vous souhaitez inclure tous les fichiers JS ...)
Pas la réponse, mais applicable à l'apparition de cette question dans les résultats de recherche.
Pour copier des fichiers/dossiers dans 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'));
Travaillé pour moi!
Utiliser pour préserver l’arborescence des répertoires d’entrée sera préservée.
.pipe(gulp.dest(function(file) {
var src = path.resolve(SRC_FOLDER);
var final_dist = file.base.replace(src, '');
return DIST_FOLDER + final_dist;
}))
En utilisant cela, vous pouvez mettre dans le src: .src(SRC_FOLDER + '/**/*.js')
.
Les autres réponses n'ont pas fonctionné pour moi (par exemple, utiliser base:
sur src()
}, car certains plug-ins aplatissent l'arborescence des répertoires.
copier des fichiers en parallèle
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/')),
)
);