2014-07-17 1 views
6

gulp로 개별 .js 파일을 축소하려고합니다. 좋아요 :gulp가 이미 압축 된 파일을 축소합니다.

file_one.js --> file_one.min.js 
file_two.js --> file_two.min.js 

꿀꺽 거리기를 처음 실행할 때 작동합니다. 하지만 두 번째로 실행하면 다음과 같이 보입니다.

그리고 덤프를 실행할 때마다 패턴이 반복됩니다. 이미 축소 된 js에서 어떻게 중지시킬 수 있습니까? 당신이 당신의 비 축소 된 파일을 같은 디렉토리에 축소 된 파일을 저장하기 때문에 이런 일이

gulp.task('scripts', function() { 
    return gulp.src('dest/*js') 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(uglify()) 
     .pipe(gulp.dest('dest')); 
}); 

답변

7

:

는 다음 코드를 사용합니다. 스트림의 첫 번째 부분 (gulp.src)은 dest 폴더 내의 모든 파일을 읽습니다. 축소 된 파일을 동일한 폴더에 저장하기 때문에 두 번째 실행시 다시 축소됩니다. (가) 당신은 몇 가지 옵션이 있습니다

  1. 을 다른 것으로 변경 출력 폴더를
  2. 변경 (예를 gulp.dest('build')에 대한) gulp.src 만이 아닌 축소 된 파일
+0

감사합니다. 훌륭하게 작동했습니다. – Oscar

+0

OP가 포인트 2를 수행하는 방법에 대한 설명을 요구하고 있다고 생각합니다. 즉, "비 압축 파일과 일치"합니다. –

+0

@RickDavies가 댓글을 읽었습니다. 이 솔루션은 그를 위해 일했습니다. downvote 필요가 없습니다. –

21

당신의 축소 된 파일을 넣을 수에 맞게 다른 디렉토리, 또는이 같은 gulp.src에서 그들을 제외 할 수 있습니다 : 당신은 페이지가있는

gulp.task('scripts', function() { 
    return gulp.src(['dest/*.js', '!dest/*.min.js']) 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(uglify()) 
     .pipe(gulp.dest('dest')); 
}); 
+1

처음에는 별도의 배열에서 축소 된 파일을 제외해야했습니다 :'gulp.src ([ 'css/*. css'], [ '! css/*. min.css'])' '[] '중. 이것은 나를 위해 일했다. 감사! – rhand

0

을 중복 된 파일이므로 먼저 파일을 다시 실행하기 위해 대상 파일을 삭제해야합니다. 참조 예 :

//clean 
gulp.task('clean', function(){ 
    return del(['dist']); 
}); 

    //Default task 
    gulp.task('default',['clean'], function(){ 
     gulp.start('usemin','imagemin','copy','views'); 
    });