Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Удаленная работа для IT-специалистов
gulp
index.html
index2.html
index3.html
http://localhost:port/index2.html
- main-folder - gulpfile.js - app-folder - index.html - index2.html - index3.html
http://localhost:port/app-folder/index2.html
var gulp = require('gulp'), // Подключаем Gulp sass = require('gulp-sass'), //Подключаем Sass пакет, browserSync = require('browser-sync'), // Подключаем Browser Sync concat = require('gulp-concat'), // Подключаем gulp-concat (для конкатенации файлов) uglify = require('gulp-uglifyjs'), // Подключаем gulp-uglifyjs (для сжатия JS) cssnano = require('gulp-cssnano'), // Подключаем пакет для минификации CSS rename = require('gulp-rename'), // Подключаем библиотеку для переименования файлов del = require('del'), // Подключаем библиотеку для удаления файлов и папок imagemin = require('gulp-imagemin'), // Подключаем библиотеку для работы с изображениями pngquant = require('imagemin-pngquant'), // Подключаем библиотеку для работы с png cache = require('gulp-cache'), // Подключаем библиотеку кеширования autoprefixer = require('gulp-autoprefixer');// Подключаем библиотеку для автоматического добавления префиксов gulp.task('sass', function(){ // Создаем таск Sass return gulp.src('app/sass/**/*.scss') // Берем источник .pipe(sass()) // Преобразуем Sass в CSS посредством gulp-sass .pipe(autoprefixer(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true })) // Создаем префиксы .pipe(gulp.dest('app/css')) // Выгружаем результата в папку app/css .pipe(browserSync.reload({stream: true})) // Обновляем CSS на странице при изменении }); gulp.task('browser-sync', function() { // Создаем таск browser-sync browserSync({ // Выполняем browserSync server: { // Определяем параметры сервера baseDir: 'app' // Директория для сервера - app }, notify: false // Отключаем уведомления }); }); gulp.task('scripts', function() { return gulp.src([ // Берем все необходимые библиотеки 'app/js/base/bootstrap.min.js', 'app/js/scripts.js', ]) .pipe(concat('main.min.js')) // Собираем их в кучу в новом файле libs.min.js .pipe(uglify()) // Сжимаем JS файл .pipe(gulp.dest('app/js')); // Выгружаем в папку app/js }); gulp.task('css-libs', ['sass'], function() { return gulp.src('app/css/main.css') // Выбираем файл для минификации .pipe(cssnano()) // Сжимаем .pipe(rename({suffix: '.min'})) // Добавляем суффикс .min .pipe(gulp.dest('app/css')); // Выгружаем в папку app/css }); gulp.task('watch', ['browser-sync', 'css-libs', 'scripts'], function() { gulp.watch('app/sass/**/*.scss', ['sass']); // Наблюдение за sass файлами в папке sass gulp.watch('app/*.html', browserSync.reload); // Наблюдение за HTML файлами в корне проекта gulp.watch('app/js/**/*.js', browserSync.reload); // Наблюдение за JS файлами в папке js }); gulp.task('clean', function() { return del.sync('production'); // Удаляем папку production перед сборкой }); gulp.task('img', function() { return gulp.src('app/img/**/*') // Берем все изображения из app .pipe(cache(imagemin({ // С кешированием // .pipe(imagemin({ // Сжимаем изображения без кеширования interlaced: true, progressive: true, svgoPlugins: [{removeViewBox: false}], use: [pngquant()] }))/**/) .pipe(gulp.dest('production/img')); // Выгружаем на продакшен }); gulp.task('build', ['clean', 'img', 'sass', 'scripts'], function() { var buildCss = gulp.src([ // Переносим библиотеки в продакшен 'app/css/main.min.css' ]) .pipe(gulp.dest('production/css')) var buildFonts = gulp.src('app/fonts/**/*') // Переносим шрифты в продакшен .pipe(gulp.dest('production/fonts')) var buildJs = gulp.src('app/js/**/*') // Переносим скрипты в продакшен .pipe(gulp.dest('production/js')) var buildHtml = gulp.src('app/**/*.html') // Переносим HTML в продакшен .pipe(gulp.dest('production')); }); gulp.task('clear', function (callback) { return cache.clearAll(); }) gulp.task('default', ['watch']);
baseDir: 'app'