const gulp = require('gulp');
const csslint = require('gulp-csslint');
const concatcss = require('gulp-concat-css');
const uglifycss = require('gulp-uglifycss');
const stylish = require('jshint-stylish');
const jshint = require('gulp-jshint');
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');
const rename = require('gulp-rename');
const gulpif = require('gulp-if');
const 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'
}
};
// 파일 삭제
gulp.task('clean', function () {
return del([path.js.dest + '*']);
});
// NPM 설치 모듈 : gulp-csslint, gulp-concat-css, gulp-uglifycss
// CSS 문법 검사 > 병합 > 압축
gulp.task('styles', function () {
return gulp.src(path.css.src)
.pipe(csslint({
'import': false
}))
.pipe(csslint.formatter())
.pipe(concatcss(path.css.filename))
.pipe(gulp.dest(path.css.dest))
.pipe(uglifycss())
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest(path.css.dest))
});
// JS 문법 검사
gulp.task('js:hint', function () {
return gulp.src(path.js.src)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
// JS 병합
gulp.task('js:concat', function () {
return gulp.src(path.js.src)
.pipe(concat(path.js.filename))
.pipe(gulp.dest(path.js.dest));
});
// JS 압축
gulp.task('js:uglify', function () {
return gulp.src(path.js.dest + path.js.filename)
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(path.js.dest));
});
// JS 문법검사 > 병합 > 압축
gulp.task('scripts',
gulp.series('js:hint', 'js:concat', 'js:uglify')
);
// Gulp.task()를 사용해 기본(Default) 테스크 정의
gulp.task('default',
gulp.series('clean', 'scripts')
);
gulpif(조건, 참일 때 실행되는 동작, 거짓일 때 실행되는 동작)
gulpif() 함수는 세 개의 전달인자를 받습니다.
const gulp = require('gulp');
const csslint = require('gulp-csslint');
const concatcss = require('gulp-concat-css');
const uglifycss = require('gulp-uglifycss');
const stylish = require('jshint-stylish');
const jshint = require('gulp-jshint');
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');
const rename = require('gulp-rename');
const gulpif = require('gulp-if');
const del = require('del');
// 환경 설정
const config = {
lint: true,
concat: true,
uglify: false,
rename: false
};
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'
}
};
// 파일 삭제
gulp.task('clean', function () {
return del([path.js.dest + '*']);
});
// NPM 설치 모듈 : gulp-csslint, gulp-concat-css, gulp-uglifycss
// CSS 문법 검사 > 병합 > 압축
gulp.task('styles', function () {
return gulp.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, gulp.dest(path.css.dest)))
.pipe(gulpif(config.uglify, uglifycss()))
.pipe(gulpif(config.rename, rename({
suffix: '.min'
})))
.pipe(gulp.dest(path.css.dest))
});
// JS 문법 검사
gulp.task('js:hint', function () {
return gulp.src(path.js.src)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
// JS 병합
gulp.task('js:concat', function () {
return gulp.src(path.js.src)
.pipe(concat(path.js.filename))
.pipe(gulp.dest(path.js.dest));
});
// JS 압축
gulp.task('js:uglify', function () {
return gulp.src(path.js.dest + path.js.filename)
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(path.js.dest));
});
// JS 문법검사 > 병합 > 압축
gulp.task('scripts',
gulp.series('js:hint', 'js:concat', 'js:uglify')
);
// Gulp.task()를 사용해 기본(Default) 테스크 정의
gulp.task('default',
gulp.series('clean', 'scripts')
);
config 객체의 uglify, rename 설정 값을 거짓(false)으로 변경하여 저장합니다.