2014-10-07 5 views
3

꿀꺽 꿀꺽하고 있습니다. 현재 빌드 프로세스에서 src 파일의 묶음에 배치를 복사하고 이동하고 적용하려고합니다. 꿀꺽 꿀꺽 거림을 사용하여 각 단계마다 필요한 파일을 컴파일하고 각각에 올바른 플러그인을 적용하면 일부 파일에서만 작동하는 것으로 보입니다.한 스트림에있는 꿀꺽 꿀꺽 꿀꺽하게하는 필터로 인해 모든 파일이 전달되지 않습니다.

"dist"의 최종 출력물은로드 된 파일 만 부분적으로 표시합니다. I.E. 그것은 단지 CSS와 img 폴더를 보여 주며 이미지의 절반 만, 마찬가지로 lib의 절반 만이 모두 잡아 당겨집니다. 확실히 플러그인이 자동으로 실패하지 않는 것은 확실합니다. 또한 때로는 src 파일에서 완전히 재귀 적으로 진행되지 않습니다.

이미지 플러그인과 같은 단계 단계를 제거하려고 시도했지만 여전히 동일한 문제가있었습니다.

내가 사용하고 싶은 이상적입니다 (현재 사용하고 있지만, 그 문제가) :

var sourceFiles = [ 
    '!./js/_src', 
    './js/**', 
    './css/**/*.css', 
    './img/**', 
    './files/**', 
    '!./login/_src', 
    './login/**' 
] 
gulp.task('build',['clean'], function(){ 

    var replaceVersion = [/%version/gi,'v=' + p.version ]; 

    var filterHTML = filter('**/*.html'); 
    var filterJSON = filter('**/*.json'); 
    var filterENV = filter('**/env.js'); 
    var filterIMG = filter('img/**/*.*'); 

    gulp 
     .src(sourceFiles, {base: './'}) 

     .pipe(plumber({ 
      errorHandler: onError 
     })) 

     .pipe(filterHTML) 
      .pipe(replace([replaceVersion])) 
      .pipe(minifyhtml()) 
     .pipe(filterHTML.restore()) 

     .pipe(filterJSON) 
      .pipe(minifyjson()) 
     .pipe(filterJSON.restore()) 

     .pipe(filterENV) 
      .pipe(replace([replaceVersion])) 
     .pipe(filterENV.restore()) 

     .pipe(filterIMG) 
      .pipe(imagemin({ 
       progressive: true, 
       svgoPlugins: [{removeViewBox: false}], 
       use: [pngcrush()] 
      })) 
     .pipe(filterIMG.restore()) 

     .pipe(gulp.dest(paths.dist)) 

     .pipe(notify({ 
      title: 'Gulp BUILD Success ', 
      icon: path.join(__dirname, '/_assets/gulp.png'), 
      onLast: true, 
      wait: true 
     })); 

}); 

그리고 이것이 내가 현재까지에 대한 정착하고있어 더러운/혼란/장황한 방법을 I 해결책 찾기 :

gulp.task('build', function(){ 

    console.log('----------------------------------------------------'); 
    console.log('      v'+ p.version); 
    console.log('----------------------------------------------------'); 

    setTimeout(function(){ // few seconds delay to display message above 

     runSequence(
      [ 
       'clean' 
      ], 
      [ 
       'build:index', 
       'build:styles', 
       'build:files', 
       'build:icons', 
       'build:scripts', 
       'build:libs', 
       'build:templates', 
       'build:resource', 
       'build:img', 
       'build:login', 
       'build:signup', 
       'build:recommend' 
      ], 
      [ 
       'build:setVersion' 
      ], 
      [ 
       'build:compressHTML', 
       'build:compressJSON', 
       'build:compressIMG' 
      ], 
      function(){ 
       console.log('Build Complete'); 
      } 
     ) 

    }, 3000) 

}); 

gulp.task('build:index', function(){ 
    return gulp 
     .src(['index.html'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:styles', function(){ 
    return gulp 
     .src(['css/**/*.css', 'css/maps/*.*'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:files', function(){ 
    return gulp 
     .src('files/**/*.*', { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:icons', function(){ 
    return gulp 
     .src('icons/**/*.*', { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:scripts', function(){ 
    return gulp 
     .src([‘js/app.min.js', 'js/env.js', 'js/main.js', 'js/maps/app.min.js.map'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:libs', function(){ 
    return gulp 
     .src(['js/lib/**/*.*','!js/lib/_src/**'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:templates', function(){ 
    gulp 
     .src(['js/templates/**/*.*'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:resource', function(){ 
    return gulp 
     .src(['js/resource/*.*'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:img', function(){ 
    return gulp 
     .src(['img/**/*.*'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:login', function(){ 
    return gulp 
     .src(['login/**/*.*' ,'!login/_src/**'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:signup', function(){ 
    return gulp 
     .src(['signup/**/*.*' ,'!signup/_src/**'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 

gulp.task('build:recommend', function(){ 
    return gulp 
     .src(['recommend/**/*.*' ,'!recommend/_src/**'], { base: './'}) 
     .pipe(gulp.dest(paths.dist)); 
}); 


gulp.task('build:setVersion', function(){ 
    return gulp 
     .src([paths.dist + 'index.html', paths.dist + '/**/*.html', paths.dist + '/**/env.js'], { base: './'}) 
     .pipe(replace([version])) 
     .pipe(gulp.dest('.')); 
}); 


gulp.task('build:compressHTML', function(){ 
    return gulp 
     .src([paths.dist + '/**/*.html'], { base: './'}) 
     .pipe(minifyhtml()) 
     .pipe(gulp.dest('.')); 
}); 

gulp.task('build:compressJSON', function(){ 
    return gulp 
     .src([paths.dist + '/**/*.json'], { base: './'}) 
     .pipe(minifyjson()) 
     .pipe(gulp.dest('.')); 
}); 

gulp.task('build:compressIMG', function(){ 
    return gulp 
     .src([paths.dist + '/img/**/*.*'], { base: './'}) 
     .pipe(imagemin({ 
      progressive: true, 
      svgoPlugins: [{removeViewBox: false}], 
      use: [pngcrush()] 
     })) 
     .pipe(gulp.dest('.')); 
}); 
+0

첫 번째 예제에서'clean' 작업을위한 코드를 보여줄 수 있습니까? – Heikki

+0

@Heikki 확실하지만 문제가 아닙니다. 간단합니다. gulp.task ('clean', function (cb) { return del ([paths.dist], cb); }); – Labithiotis

+0

당신의 꿀꺽 마시는 버전은 무엇입니까? 'gulp -v' – Heikki

답변

0

모든 것을 수행하는 하나의 작업을 원한다면 다른 접근 방법을 권하고 싶습니다. src 파일을 모두 채우고 필터링하는 대신 여러 개의 스트림을 만든 다음 merge을 함께 만듭니다.

나는 이것으로 성공했다. 각 스트림을 별도로 지정하면 더 읽기 쉽습니다.