-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.mjs
85 lines (70 loc) · 3.85 KB
/
gulpfile.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/* eslint-disable n/no-unpublished-import */
// --------------------------------------------------------------------------------
// *
// * В проекте используется Gulp + Webpack + Babel + Nunjucks
// * Конфигурационный файл и все раннеры используют синтаксис ES6+
// * больше информации о Babel (https://babeljs.io/docs/en/)
// * больше информации о Webpack (https://webpack.js.org/concepts/)
// * примеры конфигурации Webpack (https://webpack.js.org/configuration/)
// * больше о Nunjucks (https://mozilla.github.io/nunjucks/templating.html#template-inheritance)
// * --------
// * --------
// * Это главный конфигурационный файл gulp сборщика, тут описываем/поделючаем как модули, задачи по запуску и сборке проекта.
// * Gulp-раннер разделён на модули, каждый модуль отвечает за что-то своё.
// * Модули-раннеры находятся в папке -> /gulp/tasks
// * Модули-конфигурации находятся в папке -> /gulp/config
// * Каталог в котором работаем с исходниками -> /src
// * Каталог в котором собирается проект -> /build
// *
// * Copyright (c) 2023 NИ
// --------------------------------------------------------------------------------
'use strict';
import gulp from 'gulp';
// Импорт путей
import { path } from './gulp/config/path.mjs';
// Импорт общих плагинов
import { plugins } from './gulp/config/plugins.mjs';
// Импорт информации о пакете
import { pkg } from './gulp/config/pkg.mjs';
// Импорт обработчика ошибок
import { errors } from './gulp/config/errors.mjs';
// Импорт задач
import { reset } from './gulp/tasks/reset.mjs';
import { server } from './gulp/tasks/server.mjs';
import { templates, templatesData } from './gulp/tasks/templates.mjs';
import { styles } from './gulp/tasks/styles.mjs';
import { scripts } from './gulp/tasks/scripts.mjs';
import { fonts } from './gulp/tasks/fonts.mjs';
import { images } from './gulp/tasks/images.mjs';
import { vendors } from './gulp/tasks/packages.mjs';
// Оповещения
import { createNotification } from './gulp/tasks/notify.mjs';
// Передаём значения в глобальную переменную app
global.app = {
isBuild: process.argv.includes('--build'), // -> Проверяем режим продакшена
isDev: !process.argv.includes('--build'), // -> Проверяем режим разработки
path: path,
gulp: gulp,
plugins: plugins,
errors: errors,
pkg: pkg,
};
// функция наблюдатель
function watcher() {
gulp.watch(path.watch.nunjucks, templates);
gulp.watch(path.watch.nunjucksData, gulp.parallel(templatesData, templates)).on('change', plugins.browsersync.reload);
gulp.watch(path.watch.styles, styles);
gulp.watch(path.watch.scripts, scripts);
gulp.watch(path.watch.images, images);
}
// gulp.parallel() - параллельное выполнение задач
// передаём сюда свои задачи (task)
const mainTasks = gulp.parallel(templates, vendors, styles, scripts, fonts, images);
// gulp.series() - последовательное выполнение задач
const dev = gulp.series(reset, mainTasks, gulp.parallel(watcher, server, createNotification));
const build = gulp.series(reset, mainTasks, createNotification);
// Экспорт сценариев:
export { dev };
export { build };
// Выполнение сценария по умолчанию
gulp.task('default', dev);