Y
Y
yuekdl2020-01-24 11:52:08
gulp.js
yuekdl, 2020-01-24 11:52:08

How to fix gulp3 code syntax under gulp 4 to make it work?

Please help me rewrite the gulpfile syntax so that everything works.
Updated to gulp4 but throws errors.

'use strict';

var gulp = require('gulp'),
    mainBowerFiles = require('main-bower-files'),
    watch = require('gulp-watch'),
    prefixer = require('gulp-autoprefixer'),
    uglify = require('gulp-uglify'),
    sourcemaps = require('gulp-sourcemaps'),
    sass = require('gulp-sass'),
    cleanCSS = require('gulp-clean-css'),
    imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant'),
    rimraf = require('rimraf'),
    browserSync = require("browser-sync"),
    ftp = require('gulp-ftp'),
    reload = browserSync.reload;


var path = {
    vendor: {
        js: 'src/js/',
        css: 'src/css/'
    },
    dist: { //Тут мы укажем куда складывать готовые после сборки файлы
        html: 'dist/',
        js: 'dist/js/',
        sass: 'dist/css/',
        css: 'dist/css/',
        img: 'dist/img/',
        fonts: 'dist/fonts/'
    },
    src: { //Пути откуда брать исходники
        html: 'src/*.html', //Синтаксис src/*.html говорит gulp что мы хотим взять все файлы с расширением .html
        js: 'src/js/*.js', //В стилях и скриптах нам понадобятся только main файлы
        sass: 'src/sass/*.sass',
        css: 'src/css/*.css',
        img: 'src/img/**/*.*', //Синтаксис img/**/*.* означает - взять все файлы всех расширений из папки и из вложенных каталогов
        fonts: 'src/fonts/**/*.*'
    },
    watch: { //Тут мы укажем, за изменением каких файлов мы хотим наблюдать
        html: 'src/**/*.html',
        js: 'src/js/**/*.js',
        sass: 'src/sass/*.sass',
        css: 'src/css/**/*.css',
        img: 'src/img/**/*.*',
        fonts: 'src/fonts/**/*.*'
    },
    clean: './dist'
};
var config = {
    server: {
        baseDir: "./dist"
    },
    //tunnel: true,
    host: 'localhost',
    port: 8081,
    logPrefix: "Ilmaz"
};
gulp.task('vendorJs:build', function () {
    gulp.src(mainBowerFiles('**/*.js')) //Выберем файлы по нужному пути
        .pipe(gulp.dest(path.vendor.js)) //Выплюнем готовый файл в src
});

gulp.task('vendorCss:build', function () {
    gulp.src(mainBowerFiles('**/*.css')) //Выберем файлы по нужному пути
        .pipe(gulp.dest(path.vendor.css)) //И в src
});

gulp.task('html:build', function () {
    gulp.src(path.src.html) //Выберем файлы по нужному пути
        .pipe(gulp.dest(path.dist.html)) //Выплюнем их в папку build
        .pipe(reload({
            stream: true
        })); //И перезагрузим наш сервер для обновлений
});

gulp.task('js:build', function () {
    gulp.src(path.src.js) //Найдем наш main файл
        .pipe(sourcemaps.init()) //Инициализируем sourcemap
        .pipe(uglify()) //Сожмем наш js
        .pipe(sourcemaps.write()) //Пропишем карты
        .pipe(gulp.dest(path.dist.js)) //Выплюнем готовый файл в build
        .pipe(reload({
            stream: true
        })); //И перезагрузим сервер
});

gulp.task('sass:build', function () {
    gulp.src(path.src.sass) //Выберем наш main.sass
        .pipe(sourcemaps.init()) //То же самое что и с js
        .pipe(sass().on('error', sass.logError))
        .pipe(sass()) //Скомпилируем
        .pipe(prefixer()) //Добавим вендорные префиксы
        .pipe(cleanCSS()) //Сожмем
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(path.dist.sass)) //И в build
        .pipe(reload({
            stream: true
        }));
});

gulp.task('css:build', function () {
    gulp.src(path.src.css) //Выберем наш main.css
        .pipe(sourcemaps.init()) //То же самое что и с js
        .pipe(gulp.dest(path.dist.css)) //И в build
        .pipe(reload({
            stream: true
        }));
});

gulp.task('image:build', function () {
    gulp.src(path.src.img) //Выберем наши картинки
        .pipe(imagemin({ //Сожмем их
            progressive: true,
            svgoPlugins: [{
                removeViewBox: false
            }],
            use: [pngquant()],
            interlaced: true
        }))
        .pipe(gulp.dest(path.dist.img)) //И бросим в build
        .pipe(reload({
            stream: true
        }));
});

gulp.task('fonts:build', function () {
    gulp.src(path.src.fonts)
        .pipe(gulp.dest(path.dist.fonts))
});

gulp.task('build', 
  gulp.series(
    'clean:build',
    gulp.parallel(
      'html:build',
      'css:build',
      'js:build',
      'images:build',
      'fonts:build'
)));

gulp.task('watch', function(){
    browserSync.init(config);
    gulp.watch(path.watch.html, gulp.series('html:build'));
    gulp.watch(path.watch.scss, gulp.series('scss:build'));
    gulp.watch(path.watch.css, gulp.series('css:build'));
    gulp.watch(path.watch.js, gulp.series('js:build'));
    gulp.watch(path.watch.images, gulp.series('images:build'));
    gulp.watch(path.watch.fonts, gulp.series('fonts:build'));
  })

gulp.task('webserver', function () {
    browserSync(config);
});

gulp.task('clean', function (cb) {
    rimraf(path.clean, cb);
});
gulp.task('ftp', function () {
    return gulp.src('src/**/*.*')
        .pipe(ftp({
             
        }))
        .pipe(gutil.noop());
});
gulp.task('default', gulp.parallel('build', 'webserver', 'watch'));

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alexander, 2020-01-24
@Seasle

1. Where gulp.src(...)necessary return gulp.src(...)
2. For

gulp.task('webserver', function () {
    browserSync(config);
});
gotta do it like this
gulp.task('webserver', function (cb) {
    browserSync(config);
    cb();
});

const gulp = require('gulp');
const pipeIf = require('gulp-if');
const order = require('gulp-order');
const nunjucks = require('gulp-nunjucks');
const pretty = require('gulp-pretty-html');
const minify = require('gulp-htmlmin');
const replace = require('gulp-replace');
const sass = require('gulp-sass');
const sourcemaps = require('gulp-sourcemaps');
const autoprefixer = require('gulp-autoprefixer');
const clean = require('gulp-clean-css');
const babel = require('gulp-babel');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const image = require('gulp-image');
const clear = require('gulp-clean');
const browser = require('browser-sync').create();
const { argv } = require('yargs');

sass.compiler = require('node-sass');

gulp.task('server', (callback) => {
  browser.init({
    server: {
      baseDir: 'Build'
    },
    ui: {
      port: 8080
    },
    notify: false
  });

  callback();
});

gulp.task('reload', (callback) => {
  browser.reload();

  callback();
});

gulp.task('clear', () => {
  return gulp.src('Build', { allowEmpty: true })
    .pipe(clear({
      force: true
    }));
});

gulp.task('build:html', (callback) => {
  return gulp.src('Sources/**/*.html')
    .pipe(nunjucks.compile())
    .pipe(replace(/(\r\n|\r|\n)(\s+)?(\r\n|\r|\n)/gm, '\n'))
    .pipe(pipeIf(argv.development, pretty()))
    .pipe(pipeIf(argv.production, minify({ collapseWhitespace: true })))
    .pipe(gulp.dest(`Build/`));
});

gulp.task('build:sass', () => {
  return gulp.src(['Sources/Styles/*.sass', 'Sources/Styles/*.scss'])
    .pipe(pipeIf(argv.development, sourcemaps.init()))
    .pipe(sass())
    .pipe(autoprefixer({
      cascade: false
    }))
    .pipe(pipeIf(argv.production, clean()))
    .pipe(pipeIf(argv.development, sourcemaps.write('.')))
    .pipe(gulp.dest('Build/Styles/'));
});

gulp.task('build:js', () => {
  return gulp.src('Sources/Scripts/**/*.js')
    .pipe(pipeIf(argv.development, sourcemaps.init()))
    .pipe(order([
      // Order for JS files
      '*.js'
    ]))
    .pipe(concat('main.js'))
    .pipe(babel({
      presets: ['@babel/env']
    }))
    .pipe(pipeIf(argv.production, uglify()))
    .pipe(pipeIf(argv.development, sourcemaps.write('.')))
    .pipe(gulp.dest('Build/Scripts/'));
});

gulp.task('build:images', () => {
  return gulp.src(['Sources/Images/**/*.png', 'Sources/Images/**/*.jpg', 'Sources/Images/**/*.svg'])
    .pipe(pipeIf(argv.production, image()))
    .pipe(gulp.dest('Build/Images/'));
});

gulp.task('watch:html', () => {
  gulp.watch(['Sources/**/*.html', 'Sources/**/*.njk'], gulp.series('build:html', 'reload'));
});

gulp.task('watch:sass', () => {
  gulp.watch(['Sources/Styles/**/*.sass', 'Sources/Styles/**/*.scss'], gulp.series('build:sass', 'reload'));
});

gulp.task('watch:js', () => {
  gulp.watch('Sources/Scripts/**/*.js', gulp.series('build:js', 'reload'));
});

gulp.task('watch:images', () => {
  gulp.watch(['Sources/Images/**/*.png', 'Sources/Images/**/*.jpg', 'Sources/Images/**/*.svg'], gulp.series('build:images'));
});

gulp.task('build', gulp.parallel('build:html', 'build:sass', 'build:js', 'build:images'));

gulp.task('watch', gulp.parallel('watch:html', 'watch:sass', 'watch:js', 'watch:images'));

gulp.task('default', gulp.series('clear', 'build', 'server', 'watch'));

V
Vyach Gor, 2020-01-24
@sharnirio

Here is a detailed video of what has changed in the syntax and how to fix it - link

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question