Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //----------------------<<gulp>>----------------------\\
- const gulp = require('gulp');
- const clean = require('gulp-clean');
- const rename = require('gulp-rename');
- const replace = require('gulp-replace');
- const cheerio = require('gulp-cheerio');
- //----------------------<<html scripts>>----------------------\\
- const useref = require('gulp-useref');
- //----------------------<<pug = html>>----------------------\\
- const pug = require('gulp-pug');
- //----------------------<<sass = css>>----------------------\\
- const sass = require('gulp-sass');
- const sourcemaps = require('gulp-sourcemaps');
- const postcss = require('gulp-postcss');
- const autoprefixer = require('autoprefixer');
- const cssnano = require('cssnano');
- //----------------------<<js>>----------------------\\
- const minify = require('gulp-minify');
- //----------------------<<dev>>----------------------\\
- const browserSync = require('browser-sync').create();
- //----------------------<<svg>>----------------------\\
- const svgSprite = require('gulp-svg-sprite');
- const svgmin = require('gulp-svgmin');
- //----------------------<<personal>>----------------------\\
- const svgspriteDest = {
- mode: {
- symbol: {
- sprite: "../svg-sprite.svg"
- }
- }
- };
- gulp.task('clean', function(){
- return gulp.src('build/')
- .pipe(clean());
- });
- //----------------------<<engine tasks>>----------------------\\
- gulp.task('svgSpriteBuild', function() {
- return gulp.src('src/assets/img/svg/*.svg')
- .pipe(svgmin({
- js2svg: {
- pretty: true
- }
- }))
- .pipe(cheerio({
- run: function($) {
- $('[fill]').removeAttr('fill');
- $('[stroke]').removeAttr('stroke');
- $('[style]').removeAttr('style');
- },
- parserOptions: { xmlMode: true }
- }))
- .pipe(replace('>', '>'))
- .pipe(svgSprite(svgspriteDest))
- .pipe(gulp.dest('src/assets/img/svg/sprite/'));
- });
- gulp.task('pug', function(){
- return gulp.src('src/*.pug')
- .pipe(pug({
- pretty: true
- }))
- .pipe(wiredep({
- directory: 'bower_components/'
- }))
- .pipe(useref())
- .pipe(gulp.dest('build/'))
- });
- gulp.task('html', function(){
- return gulp.src('src/**/*.html')
- .pipe(useref())
- .pipe(gulp.dest('build/'))
- });
- gulp.task('css', function(){
- return gulp.src('src/css/main.scss')
- .pipe(sourcemaps.init())
- .pipe(sass())
- .pipe(rename('main.min.css'))
- .pipe(postcss([cssnano, autoprefixer]))
- .pipe(sourcemaps.write())
- .pipe(gulp.dest('build/css'));
- });
- gulp.task('minify-js', function(){
- gulp.src('src/js/*.js')
- .pipe(minify({
- ext:{
- min:'.min.js'
- },
- noSource: true
- }))
- .pipe(gulp.dest('src/js/ugly'))
- });
- gulp.task('js', function(){
- gulp.src('src/js/*.js')
- .pipe(minify({
- ext:{
- min:'.min.js'
- },
- noSource: true
- }))
- .pipe(gulp.dest('src/js/ugly'))
- .on('end', function(){
- gulp.run('pug');
- // gulp.run('html');
- });
- });
- gulp.task('assets', function(){
- return gulp.src('src/assets/**/*.*')
- .pipe(gulp.dest('build/assets'));
- });
- gulp.task('browser-sync', function() {
- return browserSync.init({
- server: {
- baseDir: 'build/'
- }
- });
- });
- //----------------------<<common tasks>>----------------------\\
- gulp.task('watch', function () {
- gulp.watch('src/**/*.html', gulp.series('html', browserSync.reload));
- gulp.watch('src/**/*.pug', gulp.series('pug', browserSync.reload));
- gulp.watch('src/**/*.scss', gulp.series('css', browserSync.reload));
- gulp.watch('src/**/*.js', gulp.series('js', browserSync.reload));
- gulp.watch('src/assets/**/*.*', gulp.series('assets', browserSync.reload));
- });
- gulp.task('build', gulp.series('svgSpriteBuild', 'html', 'css', 'js', 'assets'));
- gulp.task('production', gulp.series('clean', 'minify-js', 'build'));
- gulp.task('dev', gulp.parallel('build', 'watch', 'browser-sync'));
- gulp.task('default', gulp.series('clean', 'minify-js', 'dev'));
Add Comment
Please, Sign In to add comment