Commit 0f90925b authored by Nikolay Gromov's avatar Nikolay Gromov

images and svg-sprite

parent 835fccda
...@@ -8,6 +8,12 @@ const cssnano = require('gulp-cssnano'); ...@@ -8,6 +8,12 @@ const cssnano = require('gulp-cssnano');
const rename = require('gulp-rename'); const rename = require('gulp-rename');
const gulpIf = require('gulp-if'); const gulpIf = require('gulp-if');
const del = require('del'); const del = require('del');
const imagemin = require('gulp-imagemin');
const pngquant = require('imagemin-pngquant');
const svgstore = require('gulp-svgstore');
const svgmin = require('gulp-svgmin');
const path = require('path');
const cheerio = require('gulp-cheerio');
// Запуск `NODE_ENV=production gulp [задача]` приведет к сборке без sourcemaps // Запуск `NODE_ENV=production gulp [задача]` приведет к сборке без sourcemaps
const isDev = !process.env.NODE_ENV || process.env.NODE_ENV == 'dev'; const isDev = !process.env.NODE_ENV || process.env.NODE_ENV == 'dev';
...@@ -32,7 +38,7 @@ gulp.task('copy:css', function() { ...@@ -32,7 +38,7 @@ gulp.task('copy:css', function() {
console.log('---------- копирование CSS'); console.log('---------- копирование CSS');
return gulp.src('src/css/*.css', {since: gulp.lastRun('copy:css')}) return gulp.src('src/css/*.css', {since: gulp.lastRun('copy:css')})
.pipe(cssnano({ .pipe(cssnano({
discardUnused: false // не удалять несипользованные конструкции discardUnused: false // не удалять неиспользованные конструкции
})) }))
.pipe(rename(function (path) { .pipe(rename(function (path) {
path.extname = '.min.css' path.extname = '.min.css'
...@@ -41,8 +47,39 @@ gulp.task('copy:css', function() { ...@@ -41,8 +47,39 @@ gulp.task('copy:css', function() {
.pipe(gulp.dest('build/css')); .pipe(gulp.dest('build/css'));
}); });
// Копирование и оптимизация изображений
gulp.task('img', function () {
return gulp.src('src/img/*.{jpg,jpeg,gif,png,svg}')
.pipe(imagemin({
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
}))
.pipe(gulp.dest('build/img'));
});
// Сборка SVG-спрайта
gulp.task('svgstore', function () {
return gulp
.src('src/img/svg_sprite/*.svg')
.pipe(svgmin(function (file) {
return {
plugins: [{
cleanupIDs: {
minify: true
}
}]
}
}))
.pipe(svgstore({ inlineSvg: true }))
.pipe(cheerio(function ($) {
$('svg').attr('style', 'display:none');
}))
.pipe(gulp.dest('build/img'));
});
// Очистка папки сборки // Очистка папки сборки
gulp.task('clean:build', function () { gulp.task('clean', function () {
return del([ return del([
'build/**/*', 'build/**/*',
'!build/readme.md' '!build/readme.md'
...@@ -53,15 +90,15 @@ gulp.task('clean:build', function () { ...@@ -53,15 +90,15 @@ gulp.task('clean:build', function () {
// Сборка // Сборка
gulp.task('build', gulp.series( gulp.task('build', gulp.series(
'clean:build', 'clean',
gulp.parallel('less', 'copy:css') gulp.parallel('less', 'copy:css', 'img', 'svgstore')
)); ));
// Слежение за LESS // Слежение за LESS
gulp.watch('src/less/**/*.less', gulp.series('less')); // gulp.watch('src/less/**/*.less', gulp.series('less'));
// Слежение за добавочными CSS // Слежение за добавочными CSS
gulp.watch('src/css/*.css', gulp.series('copy:css')); // gulp.watch('src/css/*.css', gulp.series('copy:css'));
Изображения из корня этой папки будут скопированы в папку сборки и оптимизированы. Подпапки при копировании игнорируются.
Из SVG-файлов этой папки будет собран спрайт — файл svg_sprite.svg в папке сборки, подпапке с изображениями.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment