2018-08-11 00:19:55 -04:00
|
|
|
var gulp = require('gulp')
|
|
|
|
var browserSync = require('browser-sync').create()
|
|
|
|
var sass = require('gulp-sass')
|
|
|
|
var autoprefixer = require('gulp-autoprefixer')
|
2017-11-10 15:53:16 -06:00
|
|
|
|
2018-08-11 00:19:55 -04:00
|
|
|
var browserify = require('browserify')
|
|
|
|
var source = require('vinyl-source-stream')
|
|
|
|
var streamify = require('gulp-streamify')
|
|
|
|
var babel = require('gulp-babel')
|
|
|
|
var tap = require('gulp-tap')
|
|
|
|
var buffer = require('gulp-buffer')
|
|
|
|
var sourcemaps = require('gulp-sourcemaps')
|
2017-11-10 15:53:16 -06:00
|
|
|
|
2018-08-11 00:19:55 -04:00
|
|
|
var del = require('del')
|
|
|
|
var gutil = require('gulp-util')
|
2018-08-11 10:09:51 -04:00
|
|
|
var rename = require('gulp-rename')
|
2018-08-11 00:19:55 -04:00
|
|
|
var uglify = require('gulp-uglify')
|
2018-08-11 10:09:51 -04:00
|
|
|
var htmlmin = require('gulp-htmlmin')
|
2017-11-10 15:53:16 -06:00
|
|
|
|
2018-08-11 00:19:55 -04:00
|
|
|
var imagemin = require('gulp-imagemin')
|
2017-11-10 15:53:16 -06:00
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('js', () => {
|
2018-08-11 10:09:51 -04:00
|
|
|
return gulp.src('src/js/**/*.js', {read: false})
|
2018-08-10 23:59:10 -04:00
|
|
|
.pipe(sourcemaps.init({loadMaps: true}))
|
2018-08-11 10:14:02 -04:00
|
|
|
.pipe(tap((f) => {
|
|
|
|
f.contents = browserify(f.path, {debug: true}).bundle()
|
2018-08-10 23:59:10 -04:00
|
|
|
}))
|
2018-08-11 10:14:02 -04:00
|
|
|
.pipe(streamify(babel({presets: ['es2015', 'es2017']})))
|
2018-08-10 23:59:10 -04:00
|
|
|
.pipe(buffer())
|
|
|
|
.pipe(uglify())
|
|
|
|
.pipe(sourcemaps.write('./'))
|
2018-08-11 10:09:51 -04:00
|
|
|
.pipe(gulp.dest('dist/js'))
|
2018-08-11 00:19:55 -04:00
|
|
|
.pipe(browserSync.stream())
|
|
|
|
})
|
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('fonts', () => {
|
2018-08-11 10:09:51 -04:00
|
|
|
return gulp.src(['src/fonts**/*'])
|
|
|
|
.pipe(gulp.dest('dist'))
|
|
|
|
})
|
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('html', () => {
|
2018-08-11 00:19:55 -04:00
|
|
|
return gulp.src(['src/**/*.html'])
|
2018-08-11 10:09:51 -04:00
|
|
|
.pipe(htmlmin({collapseWhitespace: true, minifyJS: true}))
|
|
|
|
.pipe(rename(p => p.dirname = p.dirname.slice(5)))
|
2018-08-11 00:19:55 -04:00
|
|
|
.pipe(gulp.dest('dist'))
|
2017-11-10 15:53:16 -06:00
|
|
|
})
|
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('css', () => {
|
2018-08-10 23:59:10 -04:00
|
|
|
return gulp.src("src/scss/main.scss")
|
|
|
|
.pipe(sass())
|
|
|
|
.on('error', gutil.log)
|
|
|
|
.pipe(autoprefixer({ browsers: ['last 3 versions'], cascade: false }))
|
|
|
|
.pipe(gulp.dest("dist/css"))
|
2018-08-11 00:19:55 -04:00
|
|
|
.pipe(browserSync.stream())
|
2017-11-10 15:53:16 -06:00
|
|
|
})
|
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('images', () => {
|
2017-11-10 15:53:16 -06:00
|
|
|
gulp.src('src/img/**/*')
|
2018-08-10 23:59:10 -04:00
|
|
|
.pipe(imagemin())
|
|
|
|
.pipe(gulp.dest('dist/img'))
|
2017-11-10 15:53:16 -06:00
|
|
|
})
|
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('clean', () => {
|
2017-11-10 15:53:16 -06:00
|
|
|
del.sync('dist/*')
|
|
|
|
})
|
|
|
|
|
2018-08-11 10:14:02 -04:00
|
|
|
gulp.task('develop', ['build'], () => {
|
2018-08-11 10:09:51 -04:00
|
|
|
browserSync.init({server: "./dist"})
|
2018-08-10 23:59:10 -04:00
|
|
|
|
2018-08-11 10:09:51 -04:00
|
|
|
gulp.watch("src/scss/*.scss", ['css'])
|
2018-08-11 00:19:55 -04:00
|
|
|
gulp.watch("src/js/*.js", ['js'])
|
2018-08-11 10:09:51 -04:00
|
|
|
gulp.watch("src/img/**/*", ['images'])
|
|
|
|
gulp.watch("./*.html", ['html']).on('change', browserSync.reload)
|
2018-08-10 23:59:10 -04:00
|
|
|
})
|
|
|
|
|
2018-08-11 10:09:51 -04:00
|
|
|
gulp.task('build', ['clean', 'css', 'images', 'fonts', 'js', 'html'])
|
2018-08-11 00:19:55 -04:00
|
|
|
gulp.task('default', ['develop'])
|