'use strict';
// Импортируем все наши галп-плагины и сам галп
var gulp = require('gulp'),
watch = require('gulp-watch'),
prefixer = require('gulp-autoprefixer'),
uglify =require('gulp-uglify'),
sass = require('gulp-sass'),
sourcemaps =require('gulp-sourcemaps'),
rigger = require('gulp-rigger'),
cssmin = require('gulp-minify-css'),
imagemin =require('gulp-imagemin'),
tinypng = require('gulp-tinypng'),
rimraf = require('rimraf'),
browserSync = require('browser-sync'),
reload = browserSync.reload;
var path = {
build: { //указываем, куда скалдывать готовые после сборки файлы
html: 'build/',
js: 'build/js/',
css: 'build/css/',
img: 'build/img/',
fonts: 'build/fonts/'
},
src: { // Пути, где будем брать исходники
html: 'src/*.html', // Синтаксис src/*.html говорит gulp, что мы хотим взять все файлы с расширением .html
js: 'src/js/main.js', // В стилях и сриптах нам понадобятся только main-файлы
style: 'src/style/main.scss',
img: 'src/img/**/*.*' // Сиснтаксис img/**/*.* означает "взять все файлы в папке img и всех вложенных папок с любым расширением
},
clean: '.build'
};
// Создадим переменную с настройками нашего dev-сервера:
gulp.task('html:build', function () {
gulp.src(path.src.html) // Выберем файлы по нужглму пути
.pipe(rigger()) // Прогоним через rigger
.pipe(gulp.dest(path.build.html)) // Выплюнем их в папку byild
.pipe(reload({stream: true})); // И перезагрузим наш сервер для обновлений
});
// Rigger - плагин, позволяющий использовать такую конструкцию для импорта файлов:
//= template/footer.html
// СОБИРАЕМ JAVASCRIPT
// Таск по сборке скриптов выглядит так:
gulp.task('js:build', function () {
gulp.src(path.src.js) // Найдём наш main-файл
.pipe(rigger()) // Прогоним через rigger
.pipe(sourcemaps.init()) // Инициализируем sourcemaps
.pipe(uglify()) // Сжимем наш js
.pipe(sourcemaps.write()) // Пропишем карты
.pipe(gulp.dest(path.build.js)) // Выплюнем готовый файл
.pipe(reload({stream: true})); // И перезагрузим сервер
C:\2018>gulp
[00:28:19] Using gulpfile C:\2018\gulpfile.js
[00:28:19] Starting 'html:build'...
[00:28:19] Finished 'html:build' after 7.73 ms
[00:28:19] Starting 'js:build'...
[00:28:19] Finished 'js:build' after 4.66 ms
[00:28:19] Starting 'style:build'...
[00:28:19] Finished 'style:build' after 2.63 ms
[00:28:19] Starting 'fonts:build'...
[00:28:19] 'fonts:build' errored after 119 ?s
[00:28:19] Error: Invalid glob argument: undefined
at Gulp.src (C:\2018\node_modules\vinyl-fs\lib\src\index.js:20:11)
at Gulp. (C:\2018\gulpfile.js:114:7)
at module.exports (C:\2018\node_modules\orchestrator\lib\runTask.js:34:7)
at Gulp.Orchestrator._runTask (C:\2018\node_modules\orchestrator\index.js:27
3:3)
at Gulp.Orchestrator._runStep (C:\2018\node_modules\orchestrator\index.js:21
4:10)
at C:\2018\node_modules\orchestrator\index.js:279:18
at finish (C:\2018\node_modules\orchestrator\lib\runTask.js:21:8)
at module.exports (C:\2018\node_modules\orchestrator\lib\runTask.js:60:3)
at Gulp.Orchestrator._runTask (C:\2018\node_modules\orchestrator\index.js:27
3:3)
at Gulp.Orchestrator._runStep (C:\2018\node_modules\orchestrator\index.js:21
4:10)