Современная cборка Gulp для веб-разработки
Gulp — это мощный инструмент для автоматизации задач, который помогает веб-разработчикам ускорять и упрощать рабочий процесс. В этой статье мы рассмотрим, как настроить современную сборку Gulp с использованием ES-модулей и строгого режима. Мы создадим проект, который будет автоматически компилировать SCSS в CSS, минифицировать JavaScript, обрабатывать HTML и запускать локальный сервер с отслеживанием изменений.
Подготовка к установке
Перед установкой убедитесь что у вас на компьютере правильно настроенна политика запуска скриптов и установлены глобально Node.js и Gulp. Подробнее читайте здесь.
Установка зависимостей
Начнем с инициализации проекта и установки необходимых зависимостей.
- Создайте папку проекта (у нас это
project). - Откройте её в редакторе VS Code.
- Откройте терминал (
Ctrl+`) и выполните следующие команды:
npm init -y npm install gulp gulp-sass sass gulp-autoprefixer gulp-clean-css gulp-uglify gulp-concat gulp-sourcemaps browser-sync --save-dev
Эти команды создадут файл `package.json` и установят Gulp и его плагины, необходимые для нашего проекта.
Использования Gulp в строгом режиме и с модулями (ESM)
Для использования Gulp в строгом режиме и с модулями (ESM), необходимо внести некоторые изменения в конфигурацию проекта. Для этого обновите package.json для использования ES-модулей, добавив "type": "module"
Увас должно получится что-то похожее:
{
"name": "project",
"version": "1.0.0",
"description": "",
"main": "gulpfile.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"browser-sync": "^3.0.2",
"gulp": "^5.0.0",
"gulp-autoprefixer": "^9.0.0",
"gulp-clean-css": "^4.3.0",
"gulp-concat": "^2.6.1",
"gulp-sass": "^5.1.0",
"gulp-sourcemaps": "^3.0.0",
"gulp-uglify": "^3.0.2",
"sass": "^1.77.8"
}
}
Главное написать эти строки правильно:
"main": "gulpfile.js", "type": "module",
Всё остальное создается автоматически.
Настройка Gulp
Создайте файл `gulpfile.js` в корне вашего проекта и добавьте следующий код:
import gulp from 'gulp';
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';
import autoprefixer from 'gulp-autoprefixer';
import cleanCSS from 'gulp-clean-css';
import uglify from 'gulp-uglify';
import concat from 'gulp-concat';
import sourcemaps from 'gulp-sourcemaps';
import browserSync from 'browser-sync';
const sass = gulpSass(dartSass);
const server = browserSync.create();
// Пути к файлам
const paths = {
styles: {
src: 'src/scss/**/*.scss',
dest: 'dist/css'
},
scripts: {
src: 'src/js/**/*.js',
dest: 'dist/js'
},
html: {
src: 'src/**/*.html',
dest: 'dist'
}
};
// Компиляция SCSS в CSS
export function styles() {
return gulp.src(paths.styles.src, { sourcemaps: true })
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer())
.pipe(cleanCSS())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(paths.styles.dest))
.pipe(server.stream());
}
// Минификация и объединение JS файлов
export function scripts() {
return gulp.src(paths.scripts.src, { sourcemaps: true })
.pipe(sourcemaps.init())
.pipe(concat('main.min.js'))
.pipe(uglify())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(paths.scripts.dest))
.pipe(server.stream());
}
// Копирование HTML файлов
export function html() {
return gulp.src(paths.html.src)
.pipe(gulp.dest(paths.html.dest))
.pipe(server.stream());
}
// Запуск сервера и отслеживание изменений
export function serve() {
server.init({
server: {
baseDir: './dist'
}
});
gulp.watch(paths.styles.src, styles);
gulp.watch(paths.scripts.src, scripts);
gulp.watch(paths.html.src, html).on('change', server.reload);
}
// Определение задач
const build = gulp.series(gulp.parallel(styles, scripts, html), serve);
// Экспорт задач
export { build };
// Задача по умолчанию
export default build;
Этот файл определяет несколько задач для Gulp, включая компиляцию SCSS, минификацию JavaScript, копирование HTML-файлов и запуск локального сервера с отслеживанием изменений.
Структура Проекта
Создайте следующую структуру папок для вашего проекта:
project
│ gulpfile.js
│ package.json
└───src
├───scss
│ style.scss
├───js
│ script.js
└───index.html
В этой структуре:
src/scss/style.scss— файл стилей SCSS.src/js/script.js— файл JavaScript.src/index.html— основной HTML файл вашего проекта.
Запуск cборки
Теперь, когда всё настроено, вы можете запустить сборку и сервер разработки с помощью команды:
npx gulp
или просто
gulp
Gulp автоматически выполнит все задачи, определенные в gulpfile.js, и запустит сервер разработки. Браузер автоматически обновится при изменении файлов в папке src.
Остановка cборки
После запуска сборки и создания всех необходимых файтов ( в папке dist ) начнется отслежвание изменений в исходных файлах ( в папке src ).
Для остановки слежения и прекращения работы сборки нажмите Ctrl + C.
Заключение
Мы создали современную сборку Gulp, используя ES-модули и строгий режим. Эта сборка поможет вам автоматизировать задачи, связанные с компиляцией SCSS, минификацией JavaScript, обработкой HTML и запуском локального сервера. Такая автоматизация значительно ускоряет и упрощает процесс разработки веб-сайтов. Gulp — это мощный инструмент, который позволяет настроить рабочий процесс именно под ваши нужды, делая разработку более эффективной и приятной.
P.S.
Эта сборка самая простая, но является основой для дальнейшего её совершенствования, чем мы и займёмся в следующей статье:

