mirror of
https://github.com/mxpv/podsync.git
synced 2024-05-11 05:55:04 +00:00
86 lines
2.3 KiB
JavaScript
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); |