Ошибка gulpfile.js

При запуске gulp я получил ошибку:

import gulp from 'gulp';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at internalCompileFunction (node:internal/vm:128:18)
    at wrapSafe (node:internal/modules/cjs/loader:1279:20)
    at Module._compile (node:internal/modules/cjs/loader:1331:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1426:10)
    at Module.load (node:internal/modules/cjs/loader:1205:32)
    at Module._load (node:internal/modules/cjs/loader:1021:12)
    at Module.require (node:internal/modules/cjs/loader:1230:19)
    at require (node:internal/modules/helpers:179:18)
    at requireOrImport (/usr/local/lib/node_modules/gulp-cli/lib/shared/require-or-import.js:20:11)
    at execute (/usr/local/lib/node_modules/gulp-cli/lib/versioned/^5.0.0/index.js:35:3)

Сам gulpfile.js выглядит так:

import gulp from 'gulp';
import plumber from 'gulp-plumber';
import fileInclude from 'gulp-file-include';
import replace from 'gulp-replace';
import webpHtmlNosvg from 'gulp-webp-html-nosvg';
import versionNumber from 'gulp-version-number';
import sourcemaps from 'gulp-sourcemaps';
import sass from 'gulp-sass';
import rename from 'gulp-rename';
import cleanCSS from 'gulp-clean-css';
import autoprefixer from 'gulp-autoprefixer';
import groupCSSMediaQueries from 'gulp-group-css-media-queries';
import webpcss from 'gulp-webpcss';
import babel from 'gulp-babel';
import concat from 'gulp-concat';
import beautify from 'gulp-beautify';
import uglify from 'gulp-uglify';
import webp from 'gulp-webp';
import imagemin from 'gulp-imagemin';
import svgSprite from 'gulp-svg-sprite';
import fs from 'fs';
import gulpIf from 'gulp-if';
import fonter from 'gulp-fonter';
import ttf2woff2 from 'gulp-ttf2woff2';
import del from 'del';
import browserSync from 'browser-sync';

const dev = './dev';
const build = './build';
const src = './src';

const bs = browserSync.create();

function html() {
    return gulp.src(`${src}/*.html`)
        .pipe(plumber())
        .pipe(fileInclude())
        .pipe(replace(/@img\//g, '../images/'))
        .pipe(gulp.dest(dev))
        .pipe(webpHtmlNosvg())
        .pipe(versionNumber({
            value: '%MDS%',
            append: {
                key: 'version',
                to: ['json'],
            },
        }))
        .pipe(gulp.dest(build))
        .pipe(bs.stream());
}

function css() {
    return gulp.src(`${src}/scss/**/*.+(scss|sass)`)
        .pipe(plumber())
        .pipe(sourcemaps.init())
        .pipe(sass({ outputStyle: 'expanded' }))
        .pipe(replace(/@img\//g, '../images/'))
        .pipe(webpcss({ webpClass: '.webp', noWebpClass: '.no-webp' }))
        .pipe(autoprefixer({ grid: true, overrideBrowserslist: ['last 3 versions'], cascade: false }))
        .pipe(groupCSSMediaQueries())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest(`${dev}/css`))
        .pipe(cleanCSS())
        .pipe(rename({ extname: '.min.css' }))
        .pipe(gulp.dest(`${build}/css`))
        .pipe(bs.stream());
}

function scripts() {
    return gulp.src(`${src}/js/**/*.js`)
        .pipe(plumber())
        .pipe(sourcemaps.init())
        .pipe(babel({ presets: ['@babel/env'] }))
        .pipe(concat('main.js'))
        .pipe(beautify({ indent_size: 4 }))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest(`${dev}/js`))
        .pipe(uglify())
        .pipe(rename({ extname: '.min.js' }))
        .pipe(gulp.dest(`${build}/js`))
        .pipe(bs.stream());
}

function images() {
    return gulp.src(`${src}/images/**/*.+(jpg|jpeg|png|gif|svg)`)
        .pipe(plumber())
        .pipe(webp())
        .pipe(imagemin())
        .pipe(gulp.dest(`${dev}/images`))
        .pipe(gulp.dest(`${build}/images`))
        .pipe(bs.stream());
}

function svg() {
    return gulp.src(`${src}/svg/*.svg`)
        .pipe(plumber())
        .pipe(svgSprite({ mode: { stack: { sprite: '../sprite.svg' } } }))
        .pipe(gulp.dest(`${dev}/images`))
        .pipe(gulp.dest(`${build}/images`))
        .pipe(bs.stream());
}

function fonts() {
    const fontsFile = `${src}/scss/_fonts.scss`;
    
    return gulp.src(`${src}/fonts/*.otf`)
        .pipe(fonter({
            formats: ['ttf']
        }))
        .pipe(gulp.dest(`${src}/fonts`))
        .pipe(gulp.src(`${src}/fonts/*.ttf`))
        .pipe(gulpIf(file => !fs.existsSync(fontsFile), gulp.dest(`${dev}/fonts`)))
        .pipe(gulpIf(file => fs.existsSync(fontsFile), gulp.series(() => {
            console.log('Файл scss/_fonts.scss уже существует. Для обновления файла нужно его удалить!');
            return Promise.resolve();
        })));
}

function clean() {
    return del([dev, build]);
}

function copy() {
    return gulp.src(`${src}/files/**/*.*`)
        .pipe(gulp.dest(dev))
        .pipe(gulp.dest(build));
}

function watchFiles() {
    gulp.watch(`${src}/*.html`, html);
    gulp.watch(`${src}/scss/**/*.+(scss|sass)`, css);
    gulp.watch(`${src}/js/**/*.js`, scripts);
    gulp.watch(`${src}/images/**/*`, images);
    gulp.watch(`${src}/svg/*.svg`, svg);
    gulp.watch(`${src}/fonts/**/*.*`, fonts);
    gulp.watch(`${src}/files/**/*.*`, copy);
}

function serve() {
    bs.init({
        server: {
            baseDir: dev
        }
    });
}

const buildTasks = gulp.series(clean, gulp.parallel(html, css, scripts, images, svg, fonts, copy));
const devTasks = gulp.series(buildTasks, gulp.parallel(watchFiles, serve));

export {
    html,
    css,
    scripts,
    images,
    svg,
    fonts,
    clean,
    copy,
    buildTasks,
    devTasks,
};

export default devTasks;

как исправить эту ошибку, и есть ли в этом gulpfile.js другие ошибки или нарушения синтаксиса?


Ответы (0 шт):