Gulp 작업의 비동기성
Gulp의 모든 작업이 비동기적이라는 점을 이해해야 합니다. 이것이 무엇을 의미하는지 예제를 통해 살펴보겠습니다. 공개 작업(public task) 내부에서 두 개의 비공개 작업(private task)이 호출된다고 가정해 봅시다:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
비동기성은 task2 작업이
task1 작업의 완료를 기다리지 않고
그 작업과 병렬로 실행된다는 것을 의미합니다.
더 실용적인 예시로 생각해 봅시다. 첫 번째 작업이 LESS를 CSS로 변환하고, 두 번째 작업은 생성된 CSS를 최소화(minify)한다고 가정합니다.
이 경우 우리는 문제에 직면하게 됩니다: LESS 컴파일 결과가 CSS 파일에 들어가기 전에 CSS 파일을 최소화할 수 없기 때문입니다!
그러나 작업이 동기적으로, 즉 순차적으로 실행되었다면 우리는 또 다른 문제에 직면했을 것입니다: 병렬로 실행할 수 있는 작업들이 하나씩 순차적으로 실행되어 Gulp의 작업 속도를 늦추게 됩니다. 이것도 예를 들어 생각해 봅시다.
첫 번째 작업이 CSS 파일을 최소화하고, 두 번째 작업이 JavaScript 파일을 최소화한다고 가정합니다. 분명히, 이 두 개의 관련 없는 연산은 동시에 수행할 수 있습니다.
다행히도, Gulp는 어떤 작업이 병렬로 실행되어야 하고 어떤 작업이 순차적으로 실행되어야 하는지를 명시적으로 지정할 수 있는 도구를 제공합니다. 이러한 도구들은 다음 강의에서 다루겠습니다.
반드시 순차적으로만 실행되어야 하는 두 작업의 예를 생각해 보세요.
반드시 병렬로만 실행되어야 하는 두 작업의 예를 생각해 보세요.