ojs/gulpfile.js
2025-12-06 01:25:31 +04:00

105 lines
4.3 KiB
JavaScript
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Определяем переменную "preprocessor"
let preprocessor = 'sass';
// Определяем константы Gulp
const { src, dest, parallel, series, watch } = require('gulp');
// Подключаем gulp-concat
const concat = require('gulp-concat');
// Подключаем gulp-uglify-es
const uglify = require('gulp-uglify-es').default;
// Подключаем модули gulp-sass
const sass = require('gulp-sass');
const rigger = require('gulp-rigger');
// Подключаем Autoprefixer
const autoprefixer = require('gulp-autoprefixer');
// Подключаем модуль gulp-clean-css
const cleancss = require('gulp-clean-css');
// Подключаем gulp-imagemin для работы с изображениями
const imagemin = require('gulp-imagemin');
// Подключаем модуль gulp-newer
const newer = require('gulp-newer');
// Подключаем модуль del
const del = require('del');
function scripts() {
return src([ // Берём файлы из источников
'node_modules/jquery/dist/jquery.min.js',
'app/js/jquery.anoslide.js',
'app/js/jquery.sticky-kit.min.js',
'app/js/main.js',
])
.pipe(concat('app.min.js')) // Конкатенируем в один файл
.pipe(uglify()) // Сжимаем JavaScript
.pipe(dest('app/js/')) // Выгружаем готовый файл в папку назначения
}
function styles() {
return src('app/' + preprocessor + '/main.scss') // Выбираем источник: "app/sass/main.sass" или "app/less/main.less"
.pipe(eval(preprocessor)()) // Преобразуем значение переменной "preprocessor" в функцию
.pipe(concat('app.min.css')) // Конкатенируем в файл app.min.js
.pipe(autoprefixer({ overrideBrowserslist: ['last 10 versions'], grid: true })) // Создадим префиксы с помощью Autoprefixer
.pipe(cleancss( { level: { 1: { specialComments: 0 } }/* , format: 'beautify' */ } )) // Минифицируем стили
.pipe(dest('app/css/')) // Выгрузим результат в папку "app/css/"
}
function html() {
return src('app/html/*.html')
.pipe(rigger())
.pipe(dest('app/'))
}
function images() {
return src('app/images/src/**/*') // Берём все изображения из папки источника
.pipe(newer('app/images/dest/')) // Проверяем, было ли изменено (сжато) изображение ранее
.pipe(imagemin()) // Сжимаем и оптимизируем изображеня
.pipe(dest('app/images/dest/')) // Выгружаем оптимизированные изображения в папку назначения
}
function cleanimg() {
return del('app/images/dest/**/*', { force: true }) // Удаляем всё содержимое папки "app/images/dest/"
}
function buildcopy() {
return src([ // Выбираем нужные файлы
'app/css/**/*.min.css',
'app/js/**/*.min.js',
'app/fonts/**/*',
'app/images/dest/**/*',
'app/*.html',
], { base: 'app' }) // Параметр "base" сохраняет структуру проекта при копировании
.pipe(dest('dist')) // Выгружаем в папку с финальной сборкой
}
function cleandist() {
return del('dist/**/*', { force: true }) // Удаляем всё содержимое папки "dist/"
}
// Экспортируем функцию scripts() в таск scripts
exports.scripts = scripts;
// Экспортируем функцию styles() в таск styles
exports.styles = styles;
// Экспорт функции images() в таск images
exports.images = images;
// Экспортируем функцию cleanimg() как таск cleanimg
exports.cleanimg = cleanimg;
// Создаём новый таск "build", который последовательно выполняет нужные операции
exports.build = series(html,cleandist, styles, scripts, images, buildcopy);
// Экспортируем дефолтный таск с нужным набором функций
exports.default = parallel(html, styles, scripts, buildcopy);