const {src, dest, series, parallel, watch} = require('gulp'); const fs = require('fs'); const sass = require('gulp-sass'); const autoprefixer = require('gulp-autoprefixer'); const notify = require('gulp-notify'); const browser = require('browser-sync'); const concat = require('gulp-concat'); const cleanCSS = require('gulp-clean-css'); const inc = require('gulp-file-include'); const newer = require('gulp-newer'); const imagemin = require('gulp-imagemin'); const imageminPngquant = require('imagemin-pngquant'); const imageminZopfli = require('imagemin-zopfli'); const imageminMozjpeg = require('imagemin-mozjpeg'); const imageminGiflossy = require('imagemin-giflossy'); const argv = require('yargs').argv; const sourcemaps = require('gulp-sourcemaps'); const uglify = require('gulp-uglify-es').default; const del = require('del'); const header = require('gulp-header'); function getCss() { return src('src/sass/**/*.sass') .pipe(sourcemaps.init()) .pipe(newer('*')) .pipe(sass()) .pipe(autoprefixer()) // .pipe(concat('main.css')) .pipe(cleanCSS({ compatibility: 'ie8' })) .pipe(sourcemaps.write('./')) .pipe(dest('assets/css')) .pipe(browser.stream()); } function getJs() { return src('src/js/**/*.js') .pipe(sourcemaps.init()) .pipe(uglify()) .pipe(sourcemaps.write('./')) .pipe(dest('./assets/js')) } function check() { watch('src/sass/**/*.sass', getCss).on('change', browser.reload); watch('src/js/**/*.js', getJs).on('change', browser.reload); watch('src/img/*', compressImages).on('change', browser.reload); watch('**/*.php').on('change', browser.reload); watch('templates/*.php').on('add', checkNewTemplates); } function build() { clean('assets/css'); return src('src/sass/**/*.sass', {ignore: 'src/sass/parts/**'}) .pipe(sass()) .pipe(cleanCSS({ compatibility: 'ie8' })) .pipe(autoprefixer()) .pipe(dest('assets/css')) } function clean(path) { return del.sync(path); } function startServer(){ browser.init({ // server: './', proxy: "armanty-quest" }) } function compressImages(){ return src('src/img/*/**') // .pipe(newer('assets/img')) .pipe(imagemin([ imageminGiflossy({ optimizationLevel: 3, optimize: 3, lossy: 2 }), imageminPngquant({ speed: 5, quality: [0.6, 0.8] }), imageminZopfli({ more: true }), imageminMozjpeg({ progressive: true, quality: 90 }), imagemin.svgo({ plugins: [ { removeViewBox: false }, { removeUnusedNS: false }, { removeUselessStrokeAndFill: false }, { cleanupIDs: false }, { removeComments: true }, { removeEmptyAttrs: true }, { removeEmptyText: true }, { collapseGroups: true } ] }) ])) .pipe(dest('assets/img')) } function checkNewTemplates(event) { const fileName = event.slice(10, -4) const templateName = `` src(event) .pipe(header(templateName)) .pipe(dest('./')) //TODO создавать файл .sass фаайл в src/pages с именем созданного файла в templates } exports.minImg = compressImages; exports.getcss = getCss; exports.getjs = getJs; exports.check = check; exports.build = build; exports.start = parallel(check, startServer); // exports.makepages = makePages;