Ищем способ скопировать файлы в 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/'));


очевидно, что выше не работает, так есть ли способ сделать это, или npm, который уже делает это?



спасибо

828   5  

5 ответов:

лучший способ-настроить ваш 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/'));

работал на меня !

использование для сохранения входного дерева каталогов будет сохранено.

.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').

остальные ответы не работали для меня (например, с помощью base: on src()}, потому что некоторые плагины сглаживают дерево каталогов.

копировать файлы, параллельно

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/')),
)
);

Comments

    Ничего не найдено.