2014-07-16 1 views
8

연결 된 JS 파일을 생성하는 꿀꺽 꿀꺽 한 작업이 있습니다. 시계를 사용하여 프로젝트의 모든 파일에 대한 변경 사항을 감지하고 마지막 실행 이후 소스 파일이 변경된 경우에만 concat 태스크가 파일을 다시 연결하도록합니다.소스 파일이 변경된 경우에만 병합 작업 파이프 라인을 만듭니다.

참고 : 나는 더 구체적인 시계 명령을 사용할 수 있지만 내 진짜 생산하는 경우에 우리는 훨씬 더 복잡하므로 이러한 각 시계 및 작업을 생성,

을 소스 JS 파일의 여러 조합에서 여러 concatenanted JS 파일입니다 생성하는 이 같은

뭔가 :

gulp.task('scripts', function() { 
    return gulp.src('src/**/*.js') 
     .pipe(cache('scripts')) 
     // If no changed files in pipeline, exit pipeline, 
     // else add in all src files again 
     .pipe(concat('app.js')) 
     .pipe(gulp.dest('build/')); 
}); 

는 내가 단지 CONCAT을 실행 파일이있는 경우 dest로, 그래서 마지막 두 단계에 대한 lazypipe 사용에 대한 생각,하지만 난 몰라 방법 :

  • 캐시 후 (아직 파이프 라인에 남아있는 파일이 있는지 여부에 따라 조건을 실행()
  • 모든 소스 파일을 다시 가져 오십시오 (기본적으로
) 스트림을 프라임 다시) gulp.src을 (재발행

두 번째 부분은 꿀꺽 꿀꺽하면서 사용하는 것이 좋지만, 제작이 가능하다면 스트림을 다시 작성하는 것이 훨씬 깔끔할 것입니다.

누구나 이전에이 작업을 수행했거나 시작할 위치를 알고 싶습니까?

+0

[gulp-changed] (https://www.npmjs.org/package/gulp-changed/)를 보셨습니까? –

+0

@JoshClayton 나는 체크 아웃 gulp를 바꿨으며,이 문제와 관련하여 꿀꺽 꿀꺽 마시지 않은 것과 똑같이 행동 할 것으로 보인다. (즉 실제로 처리해야하는 스트림의 입력 파일을 통해서만 전달됩니다). 나는 그것이 모든 src 파일을 다시 종료하거나 추가하는 것에 대한 문제를 해결할 것이라고 생각하지 않는다. – Allen

답변

1

플러그인 gulp-newer이 트릭을 수행해야합니다.

gulp.task('scripts', function() { 
    return gulp.src('src/**/*.js') 
     .pipe(newer('app.js')) 
     .pipe(concat('app.js')) 
     .pipe(gulp.dest('build/')); 
}); 
0

이전 질문 이었지만 나는 더 많은 정보를 추가 할 것이라고 생각했지만. Gulp-newer는 파일의 타임 스탬프에 따라 변경 사항을 감지합니다. 파일이 삭제되면 gulp-newer는이 변경 사항을 선택하지 않습니다.

나는 css 파일 중 하나가 삭제되거나 변경되었지만 gulp newer가이 모든 것을 지원하지 않으면 생성해야하는 주요 연결 파일이 필요하기 때문에 캐싱 경로가 최신이 아닌 것으로보고 있습니다.

3

moettinger's answer (at the time of writing)의 코드가 잘못되었습니다. 여기에 스트림이 반환하는 것입니다 :

return gulp.src('src/**/*.js') 
    .pipe(newer('build/app.js')) 
    .pipe(concat('app.js')) 
    .pipe(gulp.dest('build/')); 

newer() 호출이 현재 디렉토리 (또는 절대 경로)을 기준으로 경로를 통과해야하는 단일 대상에 대해 테스트. gulp.dest()에 주어진 경로에 대해 해석 될 경로가 될 수 없습니다. newer('app.js')을 호출하면 newer 호출로 인해 파일을 찾을 수 없기 때문에 항상 concat이 실행됩니다.

documentation은 유사한 example을 제공합니다.