urlaub-friedrichroda/gulpfile.js
2020-04-26 17:06:09 +02:00

161 lines
3.9 KiB
JavaScript

const {
dest,
parallel,
series,
src,
watch,
} = require('gulp');
const newer = require('gulp-newer');
const imagemin = require('gulp-imagemin');
const htmlclean = require('gulp-htmlclean');
const imageResize = require('gulp-image-resize');
const noop = require('gulp-noop');
const uglify = require('gulp-uglify-es').default;
const favicons = require('gulp-favicons');
const webp = require('gulp-webp');
const cssnano = require('gulp-cssnano');
const sass = require('gulp-sass');
const devBuild = (process.env.NODE_ENV !== 'production')
const browserSync = require('browser-sync');
const deleteUnusedImages = require('gulp-delete-unused-images');
var server = browserSync.create();
const paths = {
scripts: {
src: 'src/*.js',
dest: 'dist/'
},
scss: {
src: 'src/scss/*.scss',
dest: 'src/',
},
css: {
src: 'src/*.css',
dest: 'dist/'
},
images: {
src: 'src/images/*.jpg',
dest: 'dist/images/'
},
html: {
src: 'src/*.html',
dest: 'dist/'
},
pdf: {
src: 'src/*.pdf',
dest: 'dist/'
}
};
function serve() {
server.init({
server: {
baseDir: './dist'
}
})
watch(paths.scss.src, series(scss, css));
watch(paths.html.src, series(html));
watch(paths.html.dest + 'index.html').on('change', server.reload);
}
function images() {
return src(paths.images.src)
.pipe(newer(paths.images.dest))
.pipe(imageResize({
width: 2400,
height: 1800,
crop: false,
upscale: false
}))
.pipe(imagemin({
progressive: true,
optimizationLeve: 5,
svgoPlugins: [{
removeViewBox: false
}, {
removeUselessStrokeAndFill: false
}]
}))
.pipe(dest(paths.images.dest));
}
function imagesWebp() {
return src(paths.images.src)
.pipe(newer(paths.images.dest + "*.webp"))
.pipe(imageResize({
width: 2400,
height: 1800,
crop: false,
upscale: false
}))
.pipe(webp())
.pipe(dest(paths.images.dest))
}
function js() {
return src(paths.scripts.src)
.pipe(uglify())
.pipe(dest(paths.scripts.dest))
}
function scss() {
return src(paths.scss.src)
.pipe(sass())
.pipe(dest(paths.scss.dest))
.pipe(server.stream());
}
function css() {
return src(paths.css.src)
.pipe(cssnano())
.pipe(dest(paths.css.dest));
}
function html() {
return src(paths.html.src)
.pipe(newer(paths.html.dest))
.pipe(devBuild ? noop() : htmlclean())
.pipe(dest(paths.html.dest));
}
function pdf() {
return src(paths.pdf.src)
.pipe(dest(paths.pdf.dest));
}
function manifest() {
return src('dist/favicons/manifest.*')
.pipe(dest(paths.html.dest));
}
function favicon() {
return src('src/favicon.png')
.pipe(favicons({
appName: "Ferienwohnung 'Wanderlust'",
appShortName: "Ferienwohnung",
appDescription: "Ferienwohnung in Friedrichroda OT Finsterbergen",
developerName: 'Christian Seyfferth',
developerURL: 'https://chrosey.de/',
background: '#bdf787',
path: 'favicons/',
url: 'http://urlaub-friedrichroda.de/',
display: 'standalone',
orientation: 'portrait',
scope: '/',
start_url: '/',
version: 1.0,
logging: false,
html: 'index.html',
pipeHTML: true,
replace: true,
}))
.pipe(dest(paths.html.dest + "favicons/"));
}
exports.images = parallel(images, imagesWebp);
exports.default = series(parallel(html, pdf, series(favicon, manifest)), js, series(scss, css), parallel(images, imagesWebp));
exports.serve = series(serve);