그것은에서 소스 파일을 오버라이드 (override)하는 나쁜 생각이 일반적입니다 ... 꿀꺽 꿀꺽 파일을 수정 jscs의 무한 루프로 이동 한 후 변경 사항을보고하고 다시하고 다시하고 다시 jscs을 발사보고 원인 꿀꺽 꿀꺽 마시는 일. 해당 파일이 열려있는 모든 편집자/IDE는 정상적으로 처리 할 수도 있고하지 않을 수도 있습니다. 일반적으로 파일을 별도의 dist
폴더에 쓰는 것이 좋습니다.
여기 말했다 두 가지 가능한 솔루션이다되고 그건 : 당신은 그래서 당신이하고있는 무한 루프를 방지, 두 번째를 실행하고 파일을 다시 작성에서 gulp-jscs
플러그인을 중지해야
해결 방법 1
실행 중.
이
var cache = require('gulp-cached');
gulp.task('lint', function() {
return gulp.src('/src/**/*.js')
.pipe(cache('lint'))
.pipe(jscs({
fix: true
}))
.pipe(cache('lint'))
.pipe(jscs.reporter())
.pipe(gulp.dest('/src'));
});
첫 번째 cache()
는 lint
의 마지막 호출 이후 변경된 디스크에있는 파일 만이 통과되어 있는지 확인합니다 : 당신이해야 할이 모두를 달성하기 위해 당신의 lint
작업에 gulp-cached
를 추가합니다. 두 번째 파일 cache()
은 실제로 jscs()
으로 수정 된 파일 만 디스크에 쓰게합니다.
이 솔루션의 단점은 lint
작업이 아직 두 번 실행되고 있다는 것입니다. 두 번째 실행 중에 파일이 실제로 linted되지 않기 때문에 큰 문제는 아닙니다. gulp-cache
은 그런 일이 일어나지 않도록합니다. 그러나 만약 당신이 절대적으로 lint
가 한 번만 실행되도록하려면 다른 방법이 있습니다.
해결 방법 2
먼저 당신이 사용해야하는 대신 gulp-watch
plugin 내장 gulp.watch()
(대신 gaze
의 우수한 chokidar
라이브러리를 사용하기 때문에 그건).
그럼 당신은 자신에게 간단한 pausableWatch()
함수를 작성하고 watch
작업에 그것을 사용할 수 있습니다 다음 watcher
위에서
var watch = require('gulp-watch');
function pausableWatch(watchedFiles, tasks) {
var watcher = watch(watchedFiles, function() {
watcher.close();
gulp.start(tasks, function() {
pausableWatch(watchedFiles, tasks);
});
});
}
gulp.task('watch', function() {
pausableWatch('/src/**/*.js', ['lint']);
});
을 lint
작업이 시작되기 전에 중지됩니다. 따라서 lint
작업 중에 작성된 .js
파일은 watcher
을 트리거하지 않습니다. lint
작업이 끝나면 watcher
이 다시 시작됩니다.
이 솔루션의 단점은 그 lint
작업이 (가 중지 된 이후) 변화가 watcher
에 의해 선택되지 않습니다 실행되는 동안 당신은 .js
파일을 저장합니다. lint
작업이 완료된 후 (watcher
이 다시 시작된 경우) .js
파일을 저장해야합니다.
둘러보기 주셔서 감사합니다. 무한 루프가 수정되었습니다. 또한 작업을 한 번만 실행하는 방법을 알고 싶습니다. –
@ JaredChristensen 다른 누군가가 [기본적으로 같은 질문을] 물었 기 때문에 (http://stackoverflow.com/questions/39978779/i-want-to-automatically-fix-my-css-source-files-but-i-get- an-endless-loop) 나는 이것을 두 번째로 보았고 대안적인 해결책을 찾았다. –