2014-07-27 4 views
7

일부 JS 파일을 무시 :꿀꺽 시계 CONCAT는 가끔 일부 JS 파일을 CONCAT하기 위해 꿀꺽의 CONCAT 시계 작업 설정을 가지고

var sources = [ 
    'public/js/scriptA.js', 
    'public/js/scriptB.js', 
    'public/js/scriptC.js', 
    'public/js/scriptD.js', 
    'public/js/scriptE.js' 
]; 

gulp.task('main.js', function(){ 
    return gulp.src(sources) 
     .pipe(concat('main.js')) 
     .pipe(gulp.dest('./public/js')); 
}); 

gulp.task('watch', function() { 
    gulp.watch(sources, ['main.js']); 
}); 

예쁜 정상적인 설치 나는 생각한다. 스크립트가 변경 될 때마다 main.js이 순서대로 스크립트를 연결하여 만들어집니다. 99 %의 시간 동안 잘 작동합니다.

때때로, 어쩌면 무작위로, 연결은 단순히 하나 이상의 파일을 제외합니다. scriptB.js을 편집하고 예를 들어 main.js을보고 concat'ed 만 scriptA, scriptBscriptE입니다. 그것은 C와 D를 완전히 빠져 나갔습니다. 그리고 때로는 단지 C 일 수도 있습니다. 때로는 D 일 수도 있습니다. 때로는 A 일 수도 있습니다. 그것은 단지 무작위입니다. 내가 남긴 파일들에 대해서는 아무 것도하지 않았다. 내 편집장에서 열었지만 변경되지 않고 그냥 앉아있었습니다. 꿀꺽 꿀꺽 마시는 사람은 때로는 약간의 이유 때문에 그것을 버리기로 결정합니다.

내가 고치는 방법은 단순히 스크립트를 열어 임의의 줄 또는 무언가 끝에 공백을 추가 한 다음 저장하면 main.js이 예상대로 연결됩니다. 파일에 문제가 없었습니다. 방금 다시 저장해야했습니다.

누구에게도 알려지지 않은 버그입니까? 이 버그에 대한 정보를 어디서나 찾을 수 없었습니다. 이 문제를 디버깅하거나 기록하여 다시 생성하는 방법을 찾기 위해 할 수있는 일이 있습니까?

한 가지 내가 예고 한 것은 scriptC을 편집하여 저장하고 있다고 말하면 scriptD이 누락되었습니다. scriptC으로 돌아가서 다시 저장하면 scriptD은 연결되지 않습니다. scriptD을 열고 main.js에 다시 포함시켜야합니다. 따라서 문제 팝업이 나타나면 일반적으로이 방법으로 다시 만들 수 있습니다.

일반적으로 20 회 저장시 약 1 회만 발생합니다.

+0

귀하의''gulp.watch'' 라인은''을 의미 sources.js.main'' ... 당신은 단지''sources'' 만 사용하도록 단순화하고 있다고 가정했으나 하나를 놓친 것 같습니까? –

+0

예, 바로 잡았습니다. 내가 말했듯이, 연결 축은 대부분의 시간 동안 아주 잘 작동합니다. –

+0

해결 방법을 찾으셨습니까? 우리는 같은 문제를보고 있으며 때로는 스크립트의 순서를 변경하여 일시적으로 '고정'될 수 있습니다. 확실히 어딘가에 문제가 있습니다. –

답변

2

gulp-include 플러그인을 사용하면 문제를 없앨 수 있습니다. 이 플러그인을 사용하면 main.js 파일의 특수 주석을 사용하여 js 파일을 포함/요구할 수 있습니다.

main.js :

//=require 'public/js/scriptA.js' 
//=require 'public/js/scriptB.js' 
//=require 'public/js/scriptC.js' 
//=require 'public/js/scriptD.js' 
//=require 'public/js/scriptE.js' 

gulpfile.js :

var gulp   = require("gulp"), 
    include  = require("gulp-include"); 

gulp.task("scripts", function() { 

    gulp.src("main.js") 
     .pipe(include()) 
      .on('error', console.log) 
     .pipe(gulp.dest("./public/js")); 

}); 

gulp.task('watch', function() { 
    gulp.watch(sources, ['main.js']); 
}); 

플러그인이 NPM을 통해 볼 수 있습니다 : https://www.npmjs.com/package/gulp-include