작업 디렉토리에서 서버 (같은 기계)로 프로젝트를 준비하려고합니다. 다음 코드를 사용하십시오.
gulp.src([
'index.php',
'css/**',
'js/**',
'src/**',
])
.pipe(gulp.dest('/var/www/'));
모든 파일이 복사되는 것을 볼 수 있습니다. 그러나 그것은 dir 구조를 평평하게합니다-모든 디렉토리는 복사되지만 모든 파일은 루트에 배치됩니다/var/www
Gulp는 훌륭한 빌드 도구처럼 보이지만 항목을 복사하는 것은 간단한 과정이어야합니다?
답변
다음은 폴더 구조를 병합하지 않고 작동합니다.
gulp.src(['input/folder/**/*']).pipe(gulp.dest('output/folder'));
는 '**/*'
중요한 부분입니다. 그 표현은 강력한 파일 선택 도구 인 glob 입니다. 예를 들어 .js 파일 만 복사하려면 다음을 사용하십시오.'input/folder/**/*.js'
답변
완전한 디렉토리 구조를 복사 gulp
하려면 gulp.src()
메소드 의 기반이 제공되어야합니다 .
따라서 gulp.src( [ files ], { "base" : "." })
위의 구조에서 모든 디렉토리를 재귀 적으로 복사하는 데 사용할 수 있습니다.
나처럼, 이것을 잊어 버릴 수 있다면 다음을 시도하십시오.
gulp.copy=function(src,dest){
return gulp.src(src, {base:"."})
.pipe(gulp.dest(dest));
};
답변
따라서 모든 경로가 동일한 기본 경로를 갖는 경우 기본 작업을 제공하는 솔루션이 작동합니다. 그러나 다른 기본 경로를 제공하려는 경우 여전히 작동하지 않습니다.
이 문제를 해결하는 한 가지 방법은 경로의 시작을 상대적으로 만드는 것입니다. 귀하의 경우 :
gulp.src([
'index.php',
'*css/**/*',
'*js/**/*',
'*src/**/*',
])
.pipe(gulp.dest('/var/www/'));
이것이 효과가있는 이유는 Gulp가베이스를 첫 번째 명시 적 청크의 끝으로 설정하기 때문입니다.
폴더 구조에 두 번 일치 할 수있는 특정 경로가 없는지 확인할 수있는 경우에만 작동합니다. 예를 randomjs/
들어와 레벨이 같으면 js
둘 다 일치하게됩니다.
이것이 최상위 gulp.src 함수의 일부로 이것을 포함시키는 것으로 밝혀진 유일한 방법입니다. 그러나 각 glob을 분리하여 플러그인을위한 기본 디렉토리를 지정할 수있는 플러그인 / 함수를 작성하는 것은 간단 할 것입니다.
답변
폴더의 전체 내용을 다른 폴더에 재귀 적으로 복사하려면 gulp에서 다음 windows 명령을 실행할 수 있습니다.
xcopy /path/to/srcfolder /path/to/destfolder /s /e /y
마지막 /y
옵션은 덮어 쓰기 확인 메시지를 표시하지 않는 것입니다.
Linux에서는 gulp에서 다음 명령을 실행할 수 있습니다.
cp -R /path/to/srcfolder /path/to/destfolder
당신이 사용할 수있는 꿀꺽 – 임원 또는 꿀꺽 – 실행 꿀꺽에서 시스템 명령을 실행하는 플러그인.
관련된 링크들: