97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
const gulp = require('gulp');
|
|
const pug = require('gulp-pug');
|
|
const sass = require('gulp-sass')(require('sass'));
|
|
const sourcemaps = require('gulp-sourcemaps');
|
|
const browserSync = require('browser-sync').create();
|
|
const autoprefixer = require('gulp-autoprefixer');
|
|
// const concat = require('gulp-concat');
|
|
// const gulpCopy = require('gulp-copy');
|
|
const babel = require('gulp-babel');
|
|
const uglify = require('gulp-uglify');
|
|
const imagemin = require('gulp-imagemin')
|
|
const del = require('del');
|
|
|
|
const html = (e) => {
|
|
return gulp.src('./src/*.pug')
|
|
.pipe(pug({}))
|
|
.pipe(gulp.dest('./dist'));
|
|
e();
|
|
}
|
|
exports.html = html;
|
|
|
|
|
|
const css = () => {
|
|
return gulp.src('./src/scss/**/*.scss')
|
|
.pipe(sourcemaps.init())
|
|
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
|
|
.pipe(autoprefixer())
|
|
.pipe(sourcemaps.write('.'))
|
|
.pipe(gulp.dest('./dist/css'))
|
|
.pipe(browserSync.stream());
|
|
}
|
|
exports.css = css;
|
|
|
|
|
|
const browser_sync = () => {
|
|
browserSync.init({
|
|
server: {
|
|
baseDir: "./dist/"
|
|
}
|
|
});
|
|
gulp.watch("dist/*.html").on('change', browserSync.reload);
|
|
gulp.watch("dist/**/*.js").on('change', browserSync.reload);
|
|
}
|
|
exports.browser_sync = browser_sync;
|
|
|
|
|
|
const js = () => {
|
|
return gulp.src('src/**/*.js')
|
|
.pipe(sourcemaps.init())
|
|
.pipe(babel({
|
|
presets: ['@babel/env']
|
|
}))
|
|
.pipe(uglify())
|
|
.pipe(sourcemaps.write('.', {sourceRoot: '.src/'}))
|
|
.pipe(gulp.dest('dist/'));
|
|
}
|
|
exports.js = js;
|
|
|
|
|
|
const image = () => {
|
|
return gulp.src('src/images/**/*.{svg, png, jpg}')
|
|
.pipe(imagemin())
|
|
.pipe(gulp.dest('dist/images'))
|
|
}
|
|
exports.image = image;
|
|
|
|
|
|
const clean = (e) => {
|
|
del.sync('dist');
|
|
e();
|
|
}
|
|
exports.clean = clean;
|
|
|
|
|
|
const fonts = () => {
|
|
return gulp.src('./src/fonts/**/*.*').pipe(gulp.dest('dist/fonts/'));
|
|
}
|
|
exports.fonts = fonts;
|
|
|
|
const favicons = () => {
|
|
return gulp.src('src/favicon/*.*')
|
|
.pipe(gulp.dest('dist/'));
|
|
}
|
|
exports.favicons = favicons;
|
|
|
|
const watchFiles = () => {
|
|
gulp.watch('./src/**/*.pug', gulp.series(html));
|
|
gulp.watch('./src/scss/**/*.scss', gulp.series(css));
|
|
gulp.watch('./src/**/*.js', gulp.series(js));
|
|
gulp.watch('./src/images/**/*.{svg, png, jpg}', gulp.series(image));
|
|
}
|
|
|
|
exports.watch = watchFiles;
|
|
|
|
exports.build = gulp.series(clean, fonts, html, css, js, image, favicons);
|
|
exports.server = gulp.parallel(browser_sync, watchFiles);
|