티스토리 뷰
발생일: 2015.05.17
키워드: gulp, browserify, 걸프, 브라우저리파이, multiple entries, merge-stream, merge stream
문제:
browserify 로 파일을 병합할 때, 시작 파일이 여러 개인 경우를 처리하려고 한다.
예를 들면, 시작 파일 `main1.js`, `main2.js`으로부터 `main1.bundle.js`, `main2.bundle.js`로 떨어지게 말이다.
그리고, 이 태스크가 완전히 종료된 후에 다른 태스크가 실행될 수 있어야 한다.
뭔가 스트림을 머지한 후에 리턴해야 할 것 같은데, 어떻게 하면 될까?
해결책:
스트림을 머지하는 목적의 유틸리티 모듈인 `merge-stream`이 있고, 이 모듈을 이용하면 해결할 수 있다.
바로 코드를 보는 게 더 이해하기 쉽다.
var browserify = require('browserify');
var merge = require('merge-stream');
...
gulp.task('browserify', function () {
// 시작 파일 목록
var entries = [
'src/js/main1.js',
'src/js/main2.js'
];
// 각 시작 파일에 대한 태스크 스트림을 맵으로 담아둔다.
var tasks = entries.map(function (entry) {
return browserify(entry)
.bundle()
.pipe(source(path.basename(entry)))
.pipe(rename({
extname: '.bundle.js'
}))
.pipe(gulp.dest('src/js_output'));
});
// 스트림을 병합해 리턴한다.
return merge.apply(null, tasks);
});
이렇게 하면 다른 태스크에서도 작업을 대기할 수 있다.
gulp.task('uglify', ['browserify'], function () {
// browserify 태스크가 종료된 후에 실행
});
좋구만.ㅎㅎ
반응형
댓글
공지사항