Задать вопрос
@GovnoKoder_ITS
Мне 17 лет, начинающий front-end разработчик

Почему код выполняется несколько раз?

Добрый день.
Возникла проблема со скриптом, при нажатии на кнопку у меня несколько раз выполняется код.
61b2101095889982260511.jpeg

Сам js:
spoiler
const headerNavigation = document.querySelector('.open-header');
headerNavigation.addEventListener('click', () => {
    console.log('ok')
})


Я использую gulp с webpack-stream, это проблема возникает только при включенном gulp.
Если я открою index.html из файлового менеджера, то у меня все прекрасно работает
61b21179dc3df362836715.jpeg

Мой gulpfile:
spoiler
const {src, dest, parallel, series, watch} = require('gulp');
const browserSync  = require('browser-sync').create();
const concat       = require('gulp-concat');
const uglify       = require('gulp-uglify-es').default;
const sass         = require('gulp-sass')(require('sass'));
const sassglob     = require('gulp-sass-glob')
const autoprefixer = require('gulp-autoprefixer');
const cleanCss     = require('gulp-clean-css');
const imagemin     = require('gulp-imagemin')
const newer        = require('gulp-newer');
const del          = require('del');
const bssi         = require('browsersync-ssi');
const ssi          = require('ssi');
const webpack      = require('webpack-stream');

// BrowserSync
function browsersync() {
    browserSync.init({
        server : {
            baseDir: 'app/',
            middleware: bssi({
				baseDir: 'app/',
				ext: '.html'
			})
        },
        notify : false,
        online : true,
    })
}

// Scripts
function scripts () {
    return src('app/js/app.js')
    .pipe(webpack({
        mode   : 'development',
        performance: { hints: false },
        output : {
            filename : 'app.min.js'
        },
        module : {
            rules : [
                {
                    test    : /\.js$/,
                    exclude : /(node_modules)/,
                    use: {
                        loader: 'babel-loader',
                        options: {
                            presets: ['@babel/preset-env'],
                            plugins: ['babel-plugin-root-import']
                        }
                    }
                    // query: {
					// 	presets: ['@babel/env'],
					// 	plugins: ['babel-plugin-root-import']
					// }
                }
            ]
        },
        optimization: {
            minimize: true,
            splitChunks : {
                chunks : 'all'
            }
        },
    }))
    .pipe(dest('app/js'))
    .pipe(browserSync.stream())
}

// Стили
function styles() {
    return src('app/styles/scss/main.scss')
        .pipe(sassglob())
        .pipe(sass())
        .pipe(concat('main.min.css'))
        .pipe(autoprefixer({
            overrideBrowserlist: ['last 10 versions'],
            grid: true
        }))
        .pipe(cleanCss({
            level: {
                1 : {
                    specialComments : 0
                }
            },
            /* format : 'beautify' */
        }))
        .pipe(dest('app/css'))
        .pipe(browserSync.stream())
}

// Оптимизация картинок
function image() {
    return src('app/images/src/**/*')
    .pipe(newer('app/images/dist/'))
    .pipe(imagemin())
    .pipe(dest('app/images/dist/'))
}

// Bield
function bield() {
    return src([
        'app/css/main.min.css',
        'app/js/app.min.js',
        'app/images/dist/**/*',
        'app/fonts/**/*',
        '!app/typography.html'
    ], {base: 'app'})
    .pipe(dest('dist/'))
}
function cleanDist() {
    return del('dist/**/*', {force : true})
}

async function buildhtml() {
	let includes = new ssi('app/', 'dist/', '/**/*.html', '!/**/*typography.html')
	includes.compile()
	del('dist/parts', {
		force: true
	})
}

// Вотчинг файлов
function startwatch() {
    watch(['app/**/*.js', '!app/**/*.min.js'], {
        usePolling : true
    }, scripts)
    watch(['app/styles/scss/**/*.scss'], {
        usePolling : true
    }, styles)
    watch('app/**/*.html', {
        usePolling : true
    }).on('change', browserSync.reload)
    watch('app/images/src/**/*', {
        usePolling : true
    }, image)
}


exports.scripts     = scripts;
exports.styles      = styles;
exports.browsersync = browsersync;
exports.image       = image;
exports.cleanDist   = cleanDist;
exports.buildhtml   = buildhtml;



exports.bield   = series(cleanDist, scripts, styles, image, bield, buildhtml);
exports.default = parallel(scripts, styles, image, browsersync, startwatch);


Мой package.json:
spoiler
{
  "name": "gulp",
  "version": "1.0.0",
  "description": "TaskRunner Gulp",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "GKVS",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.16.0",
    "@babel/preset-env": "^7.16.4",
    "babel-loader": "^8.2.3",
    "babel-plugin-root-import": "^6.6.0",
    "babel-preset-env": "^1.7.0",
    "browser-sync": "^2.27.7",
    "browsersync-ssi": "^0.2.4",
    "check": "^1.0.0",
    "del": "^6.0.0",
    "g": "^2.0.1",
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^8.0.0",
    "gulp-clean-css": "^4.3.0",
    "gulp-concat": "^2.6.1",
    "gulp-imagemin": "^7.1.0",
    "gulp-newer": "^1.4.0",
    "gulp-rename": "^2.0.0",
    "gulp-sass": "^5.0.0",
    "gulp-sass-glob": "^1.1.0",
    "gulp-uglify-es": "^3.0.0",
    "jquery": "^3.6.0",
    "npm": "^8.1.4",
    "sass": "^1.43.5",
    "ssi": "^0.3.0",
    "updates": "^12.2.2",
    "webpack-stream": "^7.0.0"
  },
  "dependencies": {
    "bootstrap": "^5.1.3"
  }
}


Буду очень благодарен, если подскажете в чем проблема.
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
1800 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект