gulp 4, как заставить мой gulpfile.js работать? - PullRequest
0 голосов
/ 20 октября 2018

Я заболел, пытаясь перейти на gulp 4, я потратил на это почти 2 дня… Я читал о API новых функций, о сериях, параллелях.Я сделал чистую деинсталляцию всех предыдущих пакетов и установил gulp 4 локально и gulp-cli глобально.

Моя консоль показывает

[17:17:07] CLI version 2.0.1
[17:17:07] Local version 4.0.0

Вот мой gulpfile.js (я также пытался описать функциибез gulp.task, но с простым объявлением именованной функции и последующим выполнением "exports.funcName = funcName")

    var gulp                = require("gulp"),
      browserSync           = require("browser-sync"),
      cssNano               = require("cssnano"),
      sass                  = require("gulp-sass"),
      plumber               = require("gulp-plumber"),
      gutil                 = require("gulp-util"),
      uglifyJs              = require("gulp-uglify-es").default,
      rename                = require("gulp-rename"),
      pug                   = require("gulp-pug"),  
      concat                = require("gulp-concat");



    gulp.task('server', gulp.series( (done) => {
      browserSync.init({
      server: "./",
      notify: false
      });

      done();
    }));


    gulp.task('pug', gulp.series( () => {
      gulp.src('pug/pages/*.pug')
      .pipe(pug({
        pretty: true
      }))
      .pipe(gulp.dest('./'));
    }));


    gulp.task('sass', gulp.series( () => {
      return gulp.src('sass/*.+(sass|scss)')
          .pipe(plumber(function(error) {
            gutil.log(error.message);
            this.emit('end');
          }))
          .pipe(sass())
          .pipe(gulp.dest('css/'))
          .pipe(browserSync.reload({stream:true}))
    }));



    gulp.task('uglify', gulp.series( function() {
      return gulp.src(['js/*.js', '!js/*.min.js'])
          .pipe(uglifyJs())
          .on('error', function (err) {
            console.error('Error in js task', err.toString());
          })
          .pipe(rename(function(path) {
            path.basename += ".min"
          }))
          .pipe(gulp.dest('js/'))
          .pipe(browserSync.reload({ stream: true }));
    }));

    gulp.task('compress', gulp.series('uglify', () => {
      return gulp.src(['js/*.min.js', '!js/all.min.js'])
          .pipe(concat('all.min.js'))
          .pipe(gulp.dest('js/'))
    }));



    gulp.task('watch', gulp.series('server', function () {
      gulp.watch('*.html', browserSync.reload);
      gulp.watch('sass/*.+(sass|scss)', ['sass']);
      gulp.watch('js/*.js', ['js']);
    }));


    gulp.task('default', watch);

в любом случае я всегда получаю ошибки ..... ReferenceError: watch не определен или не имеет значенияошибки утверждения

help pls ....

1 Ответ

0 голосов
/ 20 октября 2018

Это действительно магия стека переполнения.Я нахожу решение через 5-15 минут после создания вопроса:).

Решением для меня было переписать задачу просмотра в этот формат:

gulp.task('watch', gulp.series('server'));

function watch () {
     gulp.watch('*.html', browserSync.reload);
     gulp.watch('sass/*.+(sass|scss)', sass);
};
...