[node.js] 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이 있습니까?

감사



답변

가장 좋은 방법은 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').

일부 플러그인은 디렉토리 트리를 평평하게 만들기 때문에 다른 응답은 나를 위해 작동하지 않았습니다 (예 : 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/')),
)
);


답변