const {src, dest, watch, series, parallel} = require('gulp'),
csslint = require('gulp-csslint'),
concatcss = require('gulp-concat-css'),
uglifycss = require('gulp-uglifycss'),
stylish = require('jshint-stylish'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
rename = require('gulp-rename'),
gulpif = require('gulp-if'),
del = require('del');
// 환경 설정
const config = {
lint: true,
concat: true,
uglify: true,
rename: true
};
const path = {
css: {
src: 'src/css/style.css',
dest: 'dist/css/',
filename: 'style.css'
},
js: {
src: 'src/js/libs/**/*.js',
dest: 'dist/',
filename: 'DOMlibrary.js'
}
};
// 파일 삭제
function clean() {
return del([path.js.dest + '*']);
}
// NPM 설치 모듈 : gulp-csslint, gulp-concat-css, gulp-uglifycss
// CSS 문법 검사 > 병합 > 압축
function styles() {
return src(path.css.src)
.pipe(gulpif(config.lint, csslint({
'import': false
})))
.pipe(gulpif(config.lint, csslint.formatter()))
.pipe(gulpif(config.concat, concatcss(path.css.filename)))
.pipe(gulpif(config.rename, dest(path.css.dest)))
.pipe(gulpif(config.uglify, uglifycss()))
.pipe(gulpif(config.rename, rename({
suffix: '.min'
})))
.pipe(dest(path.css.dest))
}
// JS 문법 검사
function jsHint() {
return src(path.js.src)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
}
// JS 병합
function jsConcat() {
return src(path.js.src)
.pipe(concat(path.js.filename))
.pipe(dest(path.js.dest));
}
// JS 압축
function jsUglify() {
return src(path.js.dest + path.js.filename)
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.pipe(dest(path.js.dest));
}
// Gulp.task()를 사용해 기본(Default) 테스크 정의
exports.default = series(clean, parallel(styles, series(jsHint, jsConcat, jsUglify)));
// 지속적 관찰(Watch) 업무 정의
exports.watch = function () {
watch(path.css.src, series(clean, styles));
watch(path.js.src, series(clean, series(jsHint, jsConcat, jsUglify)));
};
자, 이제 Git Bash에서 관찰 업무를 실행하여 관찰 업무를 지속적으로 수행하는지 확인해 볼까요?
깨알 Tip
관찰 업무를 중지(Cancel)하려면 ctrl+c를 누릅니다.