현재 gulp를 사용하여 내 dist/
디렉토리 를 정리 하고 적절한 파일을 깨끗한 디렉토리로 이동 하는 bash 스크립트를 호출하고 있습니다. 스크립트가 * nix가 아닌 파일 시스템에서 작동하는지 확실하지 않기 때문에 gulp로이 작업을 수행하고 싶습니다.
지금까지 gulp-clean 모듈을 사용하여 dist/
디렉터리 를 정리하고 있지만 필요한 디렉터리와 해당 파일을 dist 폴더로 이동하려고하면 디렉터리가 비어 있습니다.
var gulp = require('gulp'),
clean = require('gulp-clean');
gulp.task('clean', function(){
return gulp.src(['dist/*'], {read:false})
.pipe(clean());
});
gulp.task('move',['clean'], function(){
gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
.pipe(gulp.dest('dist'));
});
gulp.task('dist', ['move']);
호출 gulp dist
하면 dist/
디렉토리가 올바른 디렉토리로 채워지지만 모두 비어 있습니다.
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
디렉토리와 그 내용을 dist/
폴더에 어떻게 복사합니까?
답변
src에 base
옵션 을 포함해야합니다 . 그러면 원하는 방식으로 파일 구조가 유지됩니다.
var filesToMove = [
'./_locales/**/*.*',
'./icons/**/*.*',
'./src/page_action/**/*.*',
'./manifest.json'
];
gulp.task('move',['clean'], function(){
// the base option sets the relative root for the set of files,
// preserving the folder structure
gulp.src(filesToMove, { base: './' })
.pipe(gulp.dest('dist'));
});
또한 프로젝트 루트에 이러한 모든 소스 파일이 있으면 길을 잃을 수도 있습니다.
가능하다면 단일 src/
폴더 를 사용하고 모든 애플리케이션 별 파일을 여기로 이동 하는 것이 좋습니다 . 이렇게하면 유지 관리를보다 쉽게 진행할 수 있으며 빌드 별 파일이 응용 프로그램 별 파일과 혼합되는 것을 방지 할 수 있습니다.
이렇게하면 위의 예에서 모든 항목을 ./
로 바꾸면 src/
됩니다.
답변
원래 질문은에서 디렉토리 (폴더라고도 함) 만 대상 으로합니다 gulp.src
. 즉 gulp.src(['_locales', ...
,이 예에서는 디렉토리_locales
이름입니다 .
허용되는 대답은 해당 디렉토리의 모든 위치에있는 파일 을 대상으로 하는 glob
패턴 을 사용합니다 ( 예 : 이중 별표 및 filename.extension 별표). 수락 된 답변이 작동합니다 …gulp.src
gulp.src(['./_locales/**/*.*', ...
… 하지만 받아 들여지는 대답은 base
옵션을 강조합니다 .
src에
base
옵션 을 포함해야합니다 …
나는 실험하고 발견했다 :
-
엄밀히 말해서
base
OP가 요청한 것을 얻기 위해 옵션 을 사용할 필요가 없습니다 . “… 그리고 적절한 파일 을 깨끗한 디렉토리로 이동합니다 .” 이base
옵션 은 실제로 폴더 + 파일 구조를 유지 하지만 (수락 된 답변에 설명 된대로) OP가 요청 한대로 파일을 이동 하기 에base
옵션이 충분하지 않습니다 . 폴더 + 파일 구조를 보존하는 것은 아마도 OP가 기대하는 것이므로 허용되는 대답은 좋지만 … -
그냥 무엇을 반복 할 않는 파일을 이동, 그것은의
glob
패턴 :-
이중 별표 (
.../**/...
)는 모든 하위 폴더와 하위 폴더의 하위 폴더 등에서 반복적으로 검색합니다. -
Filename.extension 별표 (
.../*.*
)는 모든 이름 과 모든 확장자의 파일 을 찾습니다 . 그래서 저는이 부분이 가장 강조 될 가치가 있다고 생각합니다!
-
-
받아 들여진 대답은 다른 것을 바꾼다. 에
./
전달 된 각 경로 인수에 의 접두사를 추가합니다gulp.src
. 나는 그것이 불필요 / 중복이라고 생각합니다. 없는./
경우 (OP 질문에서와 같이) 경로는 현재 디렉토리를 기준으로 확인 되어 동일한 동작이 발생 합니다. 그러나 아마도 다음과 같이 명시하는 것이 좋습니다../
내가 틀렸다면 알려주세요 …