konratnox
7/18/2017 - 12:18 PM

Простенький gulpfile

Простенький gulpfile

'use strict';

var gulp = require('gulp'),
    autoprefixer = require('gulp-autoprefixer'),
    gcmq = require('gulp-group-css-media-queries'),
    sass = require('gulp-sass'),
    cleanCSS = require('gulp-clean-css'),
    sourcemaps = require('gulp-sourcemaps'),
    watch =  require('gulp-watch'),
    minify = require('gulp-minify'),
    imagemin = require('gulp-imagemin'),
    imageminPngquant = require('imagemin-pngquant'),
    imageminJpegRecompress = require('imagemin-jpeg-recompress');

var path = {
    dev: {
        main_css: 'assets/templates/main/dev/css/*.scss',
        inside_css: 'assets/templates/inside/dev/css/*.scss',
        main_js: 'assets/templates/main/dev/js/*.js',
        inside_js: 'assets/templates/inside/dev/js/*.js',
        images : 'assets/imagesIshodniki/**/*.*'
    },
    build: {
        main_css: 'assets/templates/main/css/',
        inside_css: 'assets/templates/inside/css/',
        main_js: 'assets/templates/main/js/',
        inside_js: 'assets/templates/inside/js/',
        images: 'assets/imagesMin/'
    }
};

gulp.task('main:css', function () {
    gulp.src(path.dev.main_css)
        .pipe(sourcemaps.init())
        .pipe(sass())
        .pipe(autoprefixer())
        .pipe(gcmq())
        .pipe(cleanCSS())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest(path.build.main_css));
});

gulp.task('inside:css', function () {
    gulp.src(path.dev.inside_css)
        .pipe(sourcemaps.init())
        .pipe(sass())
        .pipe(autoprefixer())
        .pipe(gcmq())
        .pipe(cleanCSS())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest(path.build.inside_css));
});


gulp.task('main:js', function () {
    gulp.src(path.dev.main_js)
        // .pipe(sourcemaps.init())
        .pipe(minify({
            ext:{
                src:'-debug.js',
                min:'.min.js'
            }
        }))
        // .pipe(sourcemaps.write())
        .pipe(gulp.dest(path.build.main_js));
});

gulp.task('inside:js', function () {
    gulp.src(path.dev.inside_js)
        .pipe(sourcemaps.init())
        .pipe(minify({
            ext:{
                src:'-debug.js',
                min:'.min.js'
            }
        }))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(path.build.inside_js));
});



gulp.task('img:prod', function () {
    return gulp.src(path.dev.images) //Выберем наши картинки
        .pipe(gulp.dest(path.build.images)) //Копируем изображения заранее, imagemin может пропустить парочку )
        .pipe(imagemin([
            imagemin.gifsicle({interlaced: true}),
            imageminJpegRecompress({
                progressive: true,
                max: 80,
                min: 70
            }),
            imageminPngquant({quality: '80'}),
            imagemin.svgo({plugins: [{removeViewBox: true}]})
        ]))
        .pipe(gulp.dest(path.build.images)); //И бросим в prod отпимизированные изображения
});



gulp.task('watch', function(){
    watch(path.dev.main_css, function(event, cb) {
        gulp.start('main:css');
    });
    watch(path.dev.inside_css, function(event, cb) {
        gulp.start('inside:css');
    });
    watch(path.dev.main_js, function(event, cb) {
        gulp.start('main:js');
    });
    watch(path.dev.inside_js, function(event, cb) {
        gulp.start('inside:js');
    });

});


gulp.task('default', ['watch']);
{
  "name": "tornadologo.ru",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-clean-css": "^3.0.4",
    "gulp-group-css-media-queries": "^1.2.0",
    "gulp-imagemin": "^3.3.0",
    "gulp-minify": "0.0.15",
    "gulp-sass": "^3.1.0",
    "gulp-sourcemaps": "^2.5.0",
    "gulp-watch": "^4.3.11"
  },
  "dependencies": {
    "imagemin-jpeg-recompress": "^5.1.0",
    "imagemin-pngquant": "^5.0.1"
  }
}