Skip to content

Instantly share code, notes, and snippets.

@ilya-korotya
Created May 31, 2018 07:05
Show Gist options
  • Save ilya-korotya/39553b4b5301d97815a4a3c6329c4962 to your computer and use it in GitHub Desktop.
Save ilya-korotya/39553b4b5301d97815a4a3c6329c4962 to your computer and use it in GitHub Desktop.
Advanced gulp config
const gulp = require('gulp'),
sass = require('gulp-sass'),
postcss = require('gulp-postcss'),
autoprefixer = require('autoprefixer'),
mqpacker = require('css-mqpacker'),
sourcemaps = require('gulp-sourcemaps'),
debug = require('gulp-debug'),
gulpIf = require('gulp-if'),
del = require('del'),
newer = require('gulp-newer'),
browserSync = require('browser-sync').create(),
notify = require('gulp-notify'),
minify = require('gulp-csso'),
multipipe = require('multipipe'),
cssnano = require('gulp-cssnano'),
rev = require('gulp-rev'),
combine = require('stream-combiner2').obj,
imagemin = require('gulp-imagemin'),
ghPages = require('gulp-gh-pages'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify'),
babel = require('gulp-babel'),
rollup = require('gulp-rollup'),
svgstore = require('gulp-svgstore'),
svgmin = require('gulp-svgmin'),
path = require('path');
const isDevelopment = !process.env.NODE_ENV || process.env.NODE_ENV == "development"; // set NODE_ENV=production&&gulp build (В консоль на продакшн(Сборка без sourcemaps))
gulp.task('styles', function () {
return multipipe(
gulp.src('src/sass/style.scss'),
gulpIf(isDevelopment, sourcemaps.init()),
sass(),
postcss([
autoprefixer({
browsers: [
'last 1 version',
'last 2 Chrome versions',
'last 2 Firefox versions',
'last 2 Opera versions',
'last 2 Edge versions'
]
}),
mqpacker({
sort: true
})
]),
gulpIf(isDevelopment, sourcemaps.write()),
gulp.dest('build/css'),
minify(),
rename('style-min.css'),
debug({title: 'min-css'}),
gulp.dest('build/css')
).on('error', notify.onError(function (err) {
return {
title: 'Styles',
message: err.message
};
}));
});
gulp.task('min-js', function () {
return multipipe(
gulp.src('src/assets/js/app.js')
.pipe(sourcemaps.init())
.pipe(rollup({
allowRealFiles: true,
input: 'src/assets/js/app.js',
format: 'umd',
}))
.pipe(babel({
presets: ['env']
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('build/js'))
);
});
gulp.task('clean', function () {
return del('build');
});
gulp.task('images', function () {
return gulp.src('src/assets/img/**/*.{jpg, png, gif}')
.pipe(imagemin([
imagemin.optipng({optimizationLevel: 3}),
imagemin.jpegtran({progressive: true})
]))
.pipe(gulp.dest('build/img'));
});
gulp.task('html', function () {
return multipipe(
gulp.src('src/*.html', {since: gulp.lastRun('html')}),
debug({title: 'html'}),
gulp.dest('build')
).on('error', notify.onError(function (err) {
return {
title: 'html',
message: err.message
};
}));
});
gulp.task('fonts', function () {
return gulp.src('src/assets/fonts/*.*')
.pipe(gulp.dest('build/fonts'));
});
gulp.task('build', gulp.series(
'clean',
gulp.parallel('html', 'styles', 'min-js', 'images', 'fonts'),
'images')
);
gulp.task('watch', function () {
gulp.watch('src/*.html', gulp.series('html'));
gulp.watch('src/sass/**/*.*', gulp.series('styles'));
gulp.watch('src/assets/js/app.js', gulp.series('min-js'));
gulp.watch('src/assets/img/**/*.{jpg, png, gif}', gulp.series('images'));
gulp.watch('src/assets/fonts/*.*', gulp.series('fonts'));
});
gulp.task('deploy', function () {
return gulp.src('./build/**/*')
.pipe(ghPages());
});
gulp.task('serve', function () {
browserSync.init({
server: 'build'
});
browserSync.watch('build/**/*.*').on('change', browserSync.reload);
});
gulp.task('dev',
gulp.series('build', gulp.parallel('watch', 'serve'))
);
{
"name": "name",
"version": "1.0.0",
"description": "",
"main": "gulpfile.js",
"dependencies": {},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.26.0",
"babel-preset-env": "^1.6.1",
"browser-sync": "^2.18.13",
"css-mqpacker": "^6.0.1",
"debug": "^3.0.0",
"del": "^3.0.0",
"gulp": "github:gulpjs/gulp#4.0",
"gulp-babel": "^7.0.0",
"gulp-cssnano": "^2.1.2",
"gulp-csso": "^3.0.0",
"gulp-debug": "^3.1.0",
"gulp-gh-pages": "^0.5.4",
"gulp-if": "^2.0.2",
"gulp-imagemin": "^3.3.0",
"gulp-install": "^1.1.0",
"gulp-newer": "^1.3.0",
"gulp-notify": "^3.0.0",
"gulp-path": "^4.0.0",
"gulp-postcss": "^7.0.0",
"gulp-rename": "^1.2.2",
"gulp-rev": "^8.0.0",
"gulp-rollup": "^2.15.0",
"gulp-sass": "^3.1.0",
"gulp-series": "^1.0.2",
"gulp-sourcemaps": "^2.6.1",
"gulp-svgmin": "^1.2.4",
"gulp-svgstore": "^6.1.0",
"gulp-uglify": "^3.0.0",
"multipipe": "^1.0.2",
"path": "^0.12.7",
"stream-combiner2": "^1.1.1"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "",
"url": ""
},
"author": "Batya Hack",
"license": "ISC",
"bugs": {
"url": ""
},
"homepage": "
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment