Skip to content

Instantly share code, notes, and snippets.

@nb5p
Last active November 7, 2019 04:33
Show Gist options
  • Select an option

  • Save nb5p/e5337b761d9463175ef5aec6de341950 to your computer and use it in GitHub Desktop.

Select an option

Save nb5p/e5337b761d9463175ef5aec6de341950 to your computer and use it in GitHub Desktop.
Gulp Config File Templates
// gulp --version ==> 4.0.2
// .
// ├── dist/
// │ ├── css/
// │ ├── less/
// │ ├── js/
// │ └── index.html
// ├── src/
// │ ├── css/
// │ ├── less/
// │ ├── js/
// │ └── index.html
// ├── gulpfile.js
// └── package.json
// npm install glup --save-dev
const gulp = require('gulp');
// npm install gulp-concat gulp-uglify gulp-rename --save-dev
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const rename = require('gulp-rename');
// npm install gulp-less gulp-clean-css --save-dev
const less = require('gulp-less');
const css = require('gulp-clean-css');
// npm install gulp-htmlmin --save-dev
const html = require('gulp-htmlmin');
// npm install gulp-livereload --save-dev
const livereload = require('gulp-livereload');
// npm install gulp-connect --save-dev
const connect = require('gulp-connect');
// Compress and merge Js
gulp.task('js', function () {
return gulp
.src('src/js/**/*.js')
.pipe(concat('build.js'))
.pipe(uglify())
.pipe(
rename({
suffix: '.min'
})
)
.pipe(gulp.dest('dist/js'))
.pipe(livereload())
.pipe(connect.reload());
});
// Compile less
gulp.task('less', function () {
return gulp
.src('src/less/**/*.less')
.pipe(less())
.pipe(gulp.dest('dist/less'))
.pipe(livereload())
.pipe(connect.reload());
});
// Compress and merge CSS
gulp.task(
'css',
gulp.series('less', function () {
return gulp
.src(['src/css/**/*.css', 'dist/less/**/*.css'])
.pipe(concat('build.css'))
.pipe(
rename({
suffix: '.min'
})
)
.pipe(
css({
compatibility: 'ie8'
})
)
.pipe(gulp.dest('dist/css'))
.pipe(livereload())
.pipe(connect.reload());
})
);
// Minify html
gulp.task('html', function () {
return gulp
.src('src/**/*.html')
.pipe(
html({
collapseWhitespace: true
})
)
.pipe(gulp.dest('dist/'))
.pipe(livereload())
.pipe(connect.reload());
});
// Default task
gulp.task('default', gulp.parallel('html', 'js', gulp.series('less', 'css')));
// Wathc file change
gulp.task(
'watch',
gulp.parallel('default', function () {
livereload.listen();
gulp.watch('src/**/*.html', gulp.series('html'));
gulp.watch('src/js/**/*.js', gulp.series('js'));
gulp.watch(
['src/css/**/*.css', 'src/less/**/*.less'],
gulp.series('css')
);
})
);
// Dev server
gulp.task(
'server',
gulp.parallel('default', function () {
connect.server({
root: 'dist',
livereload: true,
port: 8080
});
gulp.watch('src/**/*.html', gulp.series('html'));
gulp.watch('src/js/**/*.js', gulp.series('js'));
gulp.watch(
['src/css/**/*.css', 'src/less/**/*.less'],
gulp.series('css')
);
})
);
// Build code
gulp.task('build', gulp.series('default'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment