'use strict'; const gulp = require('gulp'), riot = require('gulp-riot'), concat = require('gulp-concat'), minify = require('gulp-minify'), cssmin = require('gulp-clean-css'), ref = require('gulp-useref'); // build riotjs tags (components) gulp.task('tags', () => { return gulp.src('./app/tags/**/*.tag.html') .pipe(concat('tags.js')) .pipe(riot({compact: true, whitespace: false})) .pipe(minify({ext: {min: '.min.js'}})) .pipe(gulp.dest('./dist/js')); }); // combine javascript files gulp.task('javascript', () => { return gulp.src('./app/js/**/*.js') .pipe(concat('combined.js')) .pipe(minify({ext: {min: '.min.js'}})) .pipe(gulp.dest('./dist/js')); }); // move fonts gulp.task('fonts', () => { return gulp.src('./app/fonts/**/*.ttf') .pipe(gulp.dest('./dist/fonts')); }); // move images // TODO: minimize gulp.task('images', () => { return gulp.src('./app/images/**/*') .pipe(gulp.dest('./dist/images')); }); // combine css gulp.task('css', () => { return gulp.src('./app/css/*.css') .pipe(concat('styles.css')) .pipe(cssmin()) .pipe(gulp.dest('./dist/css')); }); // move vendor deps gulp.task('vendor', () => { return gulp.src('./app/vendor/**/*.min.*') .pipe(gulp.dest('./dist/vendor')); }); // move public files gulp.task('public', () => { return gulp.src('./app/*.*') .pipe(gulp.dest('./dist')); }); // build index gulp.task('index', () => { return gulp.src(['./app/*.html']) .pipe(ref()) .pipe(gulp.dest('./dist')); }); // build all assets gulp.task('assets', gulp.parallel('css', 'fonts', 'images', 'javascript', 'vendor'), () => {}); // build everything for production distribution gulp.task('build', gulp.series('assets', 'public', 'index', 'tags'), () => {}); // by default do this... gulp.task('default', gulp.series('build'), () => {});