- Published on
Gulp를 통한 model명 별로 빌드하기
사용 Package
-
명령어의 parameter를 처리하기 위해 yargs 사용
-
requireJS로 정의한 모듈을 optimize하기 위한 requirejs 사용
-
Task를 동기적으로 이어서 실행시키기 위한 run-sequence 사용
-
파일 삭제를 위한 del 사용
var gulp = require('gulp');
var argv = require('yargs').argv;
var rjs = require('requirejs');
var del = require('del');
var runSequence = require('run-sequence');
model명 별로 빌드 및 requireJS optimize
-
model에 따라 index.html 과 config.json이 따로 존재한다.
-
rjs.optimize 를 사용하여 코드압축 (baseUrl은 대상 소스 or directory이고, dir은 결과물이 생성되는 위치이다.)
-
model명 parameter를 전달 받아, 해당 model의 소스를 복사하고, 나머지 model은 삭제한다.
gulp.task('releaseCopy', function () {
gulp.src('./scan_ap_result.html').pipe(gulp.dest(targetDir));
if (argv.model) {
gulp
.src('./' + targetDir + '/model/' + argv.model + '/' + 'index.html')
.pipe(gulp.dest(targetDir));
gulp
.src('./' + targetDir + '/model/' + argv.model + '/' + 'config.json')
.pipe(gulp.dest(targetDir));
}
});
gulp.task('releaseClean', function () {
return del(
[targetDir + '/*/build.txt', targetDir + '/model/*', '!' + targetDir + '/model/' + argv.model],
{ force: true }
);
});
gulp.task('buildRel', function () {
rjs.optimize(
{
baseUrl: 'js',
dir: targetDir + '/js/',
},
function () {
rjs.optimize(
{
baseUrl: 'css',
dir: targetDir + '/css/',
},
function () {
rjs.optimize(
{
baseUrl: 'fonts',
dir: targetDir + '/fonts/',
},
function () {
rjs.optimize(
{
baseUrl: 'img',
dir: targetDir + '/img/',
},
function () {
rjs.optimize(
{
baseUrl: 'model',
dir: targetDir + '/model/',
},
function () {
runSequence('releaseCopy', 'releaseClean');
}
);
}
);
}
);
}
);
}
);
});