1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
mxpv-podsync/gulpfile.js
Maksym Pavlenko aee6f45c65 Add Browsersync
2018-12-21 16:04:24 -08:00

86 lines
2.3 KiB
JavaScript

const gulp = require('gulp'),
del = require('del'),
path = require('path'),
uglify = require('gulp-uglify'),
rev = require('gulp-rev'),
revreplace = require('gulp-rev-replace'),
cleancss = require('gulp-clean-css'),
autoprefixer = require('gulp-autoprefixer'),
size = require('gulp-size'),
gulpif = require('gulp-if'),
imagemin = require('gulp-imagemin'),
nunjucks = require('gulp-nunjucks'),
browserSync = require('browser-sync').create();
abs = path.join(process.cwd(), 'assets');
const config = {
images: './assets/**/*.{png,ico}',
scripts: ['./assets/js/**/*.js', './assets/css/**/*.css'],
html: './templates/[^_]*.html',
dist: {
assets: './dist/assets/',
html: './dist/html/',
},
};
// Clean up artifacts
const clean = function() {
return del(['./dist/**/*'])
};
// Minify images and output to ./dist folder
const img = function() {
return gulp.src(config.images)
.pipe(imagemin())
.pipe(size())
.pipe(gulp.dest(config.dist.assets))
};
// Minify scripts, build manifest.json and output to ./dist folder
const scripts = function() {
return gulp.src(config.scripts, {base: abs})
.pipe(gulpif(/js$/, uglify()))
.pipe(gulpif(/css$/, autoprefixer()))
.pipe(gulpif(/css$/, cleancss()))
.pipe(rev())
.pipe(size())
.pipe(gulp.dest(config.dist.assets))
.pipe(rev.manifest('manifest.json', {merge: true}))
.pipe(gulp.dest(config.dist.assets));
};
// Rewrite occurrences of scripts in template files
const html = function() {
const manifest = gulp.src('./dist/assets/manifest.json');
return gulp.src(config.html)
.pipe(nunjucks.compile())
.pipe(revreplace({manifest: manifest}))
.pipe(gulp.dest(config.dist.html))
};
const dev = function(cb) {
browserSync.init({
server: ['./dist/html/', './dist/'],
port: 8080,
watch: true,
});
gulp.watch(config.images, img);
gulp.watch(config.scripts, gulp.series(scripts, html));
gulp.watch(config.html, html);
cb();
};
const build = gulp.series(
clean,
gulp.parallel(
img,
gulp.series(scripts, html)
),
);
exports.default = build;
exports.dev = gulp.series(build, dev);