Не подключаются модули через Import

Уже сутки не могу понять почему у меня не работает или babel для gulp или я модули неправильно подключаю...
Ошибка в браузере такая:

Uncaught ReferenceError: require is not defined
  at main.min.js:1

Подключаю модули так:

import focus_visible from "focus-visible";

Код в файле main.min.js:

"use strict";var e;(e=require("focus-visible"))&&e.__esModule;

Таск в галпе:

const { src, dest, series, watch, parallel } = require('gulp'),
      fileinclude = require('gulp-file-include'),
      rename = require("gulp-rename"),
      uglify = require('gulp-uglify-es').default,
      babel = require("gulp-babel"),
      notify = require("gulp-notify"),
      browserSync = require("browser-sync").create()

const changingScripts = () => {
  return src(['src/js/main.js', 'src/js/pages/**/*.js'])
    .pipe(babel({
      presets: ['@babel/preset-env']
    }))
    .pipe(fileinclude())
    .pipe(dest('dist/js'))
    .pipe(uglify({
      toplevel: true
    }).on('error', notify.onError()))
    .pipe(rename({
      extname: '.min.js'
    }))
    .pipe(dest('dist/js'))
    .pipe(browserSync.stream())
}

Зависимости установлены такие:

"devDependencies": {
  "@babel/core": "^7.16.0",
  "@babel/preset-env": "^7.16.4",
  "browser-sync": "^2.27.7",
  "focus-visible": "^5.2.0",
  "gulp": "^4.0.2",
  "gulp-babel": "^8.0.0",
  "gulp-file-include": "^2.3.0",
  "gulp-notify": "^4.0.0",
  "gulp-rename": "^2.0.0",
  "gulp-uglify-es": "^3.0.0",
}

Вроде как всё приложил то, что нужно.
Если поможете, буду благодарен.
Весь проект встал колом из-за этой ошибки...


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

Автор решения: SineYlo

В общем, получилось решить проблему.

Для начала, добавим данные зависимости:

1. babelify
2. browserify
3. vinyl-buffer
4. vinyl-source-stream

Подключим их в gulpfile (все кроме babelify):

const browserify = require('browserify');
const vinylStream = require('vinyl-source-stream');
const vinylBuffer = require('vinyl-buffer');

Далее, немного изменим задачу со скриптами:

const changingScripts = () => {
  return browserify(`${sourceFolder}/js/main.js`)
    .transform('babelify', {
      presets: ['@babel/preset-env'],
    })
    .bundle()
    .pipe(vinylStream('main.js'))
    .pipe(vinylBuffer())
    .pipe(dest(path.build.scripts))
    .pipe(uglify({
      toplevel: true,
    }).on('error', notify.onError()))
    .pipe(rename({
      extname: '.min.js',
    }))
    .pipe(dest(path.build.scripts))
    .pipe(browserSync.stream());
};

В целом это всё, что нужно чтобы заработали импорты.

→ Ссылка