| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- const gulp = require('gulp');
- const sass = require('gulp-sass')(require('sass'));
- const autoprefixer = require('gulp-autoprefixer');
- const cleanCSS = require('gulp-clean-css');
- const sourcemaps = require('gulp-sourcemaps');
- const concat = require('gulp-concat');
- const uglify = require('gulp-uglify');
- const rename = require('gulp-rename');
- const plumber = require('gulp-plumber');
- const notify = require('gulp-notify');
- // Пути к файлам
- const paths = {
- sass: {
- src: 'resources/sass/**/*.scss',
- dest: 'public/css/'
- },
- js: {
- src: 'resources/js/**/*.js',
- dest: 'public/js/'
- }
- };
- // Обработка ошибок
- const onError = function(err) {
- notify.onError({
- title: "Gulp error in " + err.plugin,
- message: err.toString()
- })(err);
- this.emit('end');
- };
- // Компиляция SASS
- function compileSass() {
- return gulp.src(paths.sass.src)
- .pipe(plumber({ errorHandler: onError }))
- .pipe(sourcemaps.init())
- .pipe(sass({
- outputStyle: 'expanded',
- includePaths: ['resources/sass']
- }).on('error', sass.logError))
- .pipe(autoprefixer({
- cascade: false
- }))
- .pipe(sourcemaps.write('.'))
- .pipe(gulp.dest(paths.sass.dest))
- .pipe(notify({
- message: 'SASS compiled successfully!',
- onLast: true
- }));
- }
- // Минификация CSS
- function minifyCss() {
- return gulp.src('public/css/styles.css')
- .pipe(plumber({ errorHandler: onError }))
- .pipe(cleanCSS({
- level: 2
- }))
- .pipe(rename({
- suffix: '.min'
- }))
- .pipe(gulp.dest(paths.sass.dest))
- .pipe(notify({
- message: 'CSS minified successfully!',
- onLast: true
- }));
- }
- // Обработка JS
- function compileJs() {
- return gulp.src(paths.js.src)
- .pipe(plumber({ errorHandler: onError }))
- .pipe(sourcemaps.init())
- .pipe(concat('script.js'))
- .pipe(sourcemaps.write('.'))
- .pipe(gulp.dest(paths.js.dest))
- .pipe(notify({
- message: 'JS compiled successfully!',
- onLast: true
- }));
- }
- // Минификация JS
- function minifyJs() {
- return gulp.src('public/js/script.js')
- .pipe(plumber({ errorHandler: onError }))
- .pipe(uglify())
- .pipe(rename({
- suffix: '.min'
- }))
- .pipe(gulp.dest(paths.js.dest))
- .pipe(notify({
- message: 'JS minified successfully!',
- onLast: true
- }));
- }
- // Наблюдение за изменениями
- function watchFiles() {
- gulp.watch(paths.sass.src, gulp.series(compileSass));
- gulp.watch(paths.js.src, gulp.series(compileJs));
- }
- // Экспорт задач
- exports.sass = compileSass;
- exports.js = compileJs;
- exports.minifyCss = minifyCss;
- exports.minifyJs = minifyJs;
- exports.watch = gulp.series(
- gulp.parallel(compileSass, compileJs),
- watchFiles
- );
- exports.build = gulp.series(
- gulp.parallel(compileSass, compileJs),
- gulp.parallel(minifyCss, minifyJs)
- );
- exports.default = exports.watch;
|