Skip to content

Instantly share code, notes, and snippets.

@iiiBird
Last active July 30, 2020 17:50
Show Gist options
  • Save iiiBird/6a329992af7800fee5a130ec6207df4d to your computer and use it in GitHub Desktop.
Save iiiBird/6a329992af7800fee5a130ec6207df4d to your computer and use it in GitHub Desktop.
gulp + open server
var gulp = require('gulp');
var browserSync = require('browser-sync');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var minifyCSS = require('gulp-minify-css');
var htmlreplace = require('gulp-html-replace');
var clean = require('gulp-clean');
var imagemin = require('gulp-imagemin');
var cache = require('gulp-cache');
var size = require('gulp-size');
var pngquant = require('imagemin-pngquant');
var mainBowerFiles = require('main-bower-files');
gulp.task('serve', function() { //browserSync для openserver
browserSync.init({
proxy: "домен"
});
gulp.watch("dev/**/*.php").on('change', browserSync.reload);
gulp.watch("dev/**/*.css").on('change', browserSync.reload);
});
/*объединение и минификация js*/
var manualJS = [ //файлы rкоторые bower не увидел
'dev/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js',
'dev/libs/jquery.inputmask/dist/jquery.inputmask.bundle.js'
];
var bowerFilesJS = mainBowerFiles('**/*.js'); //файлы подключенные через bower
var jsFiles = bowerFilesJS.concat(manualJS);
gulp.task('scripts', function() {
return gulp.src(jsFiles)
.pipe(concat('lib.js'))
.pipe(gulp.dest('dist/js'))
.pipe(rename('lib.min.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
/*end объединение и минификация js*/
/*объединение и минификация css*/
var manualCss = [ //файлы rкоторые bower не увидел
'dev/libs/fancyBox/dist/jquery.fancybox.css',
'dev/libs/font-awesome/css/font-awesome.css'
];
var bowerFilesCSS = mainBowerFiles('**/*.css'); //файлы подключенные через bower
var cssFiles = bowerFilesCSS.concat(manualCss);
gulp.task('styles', function() {
return gulp.src(cssFiles)
.pipe(concat('lib.min.css'))
.pipe(minifyCSS({
keepBreaks: false
}))
.pipe(gulp.dest('dist/css'));
});
/*end объединение и минификация css*/
/*изменение подключения в html*/
gulp.task('htmlEdit', function() {
gulp.src('dev/layout/head.php')
.pipe(htmlreplace({
'css': 'css/lib.min.css'
}))
.pipe(gulp.dest('dist/layout/'));
gulp.src('dev/layout/footer.php')
.pipe(htmlreplace({
'js': 'js/lib.min.js'
}))
.pipe(gulp.dest('dist/layout/'));
});
/*end изменение подключения в html*/
/*копирование файлов*/
gulp.task('copyFiles', function() {
gulp.src('dev/layout/*.php') //все php
.pipe(gulp.dest('dist/layout/'));
gulp.src('dev/*.php') //все php
.pipe(gulp.dest('dist/'));
gulp.src('dev/fonts/**/*.*') //fonts
.pipe(gulp.dest('dist/fonts/'));
gulp.src(['dev/css/styles.css', 'dev/css/media.css']) //css
.pipe(gulp.dest('dist/css/'));
gulp.src('dev/js/main.js') //js
.pipe(gulp.dest('dist/js/'));
});
/*end копирование файлов*/
/*очистка папки*/
gulp.task('clean', function() {
return gulp.src('dist/', {read: false})
.pipe(clean());
});
/*end очистка папки*/
/*оптимизация изображений*/
gulp.task('images', function () {
return gulp.src('dev/images/**/*') //images
.pipe(size({
title: 'size of images'
}))
.pipe(cache(imagemin({
optimizationLevel: 5,
progressive: true,
interlaced: true,
use: [pngquant()]
})))
.pipe(size({
title: 'size of images'
}))
.pipe(gulp.dest('dist/images'));
});
gulp.task('img', function () {
return gulp.src('dev/css/img/**/*') //img
.pipe(size({
title: 'size of images'
}))
.pipe(cache(imagemin({
optimizationLevel: 5,
progressive: true,
interlaced: true,
use: [pngquant()]
})))
.pipe(size({
title: 'size of images'
}))
.pipe(gulp.dest('dist/css/img'));
});
/*end оптимизация изображений*/
gulp.task('clear', function () { //таск очистки кэша
return cache.clearAll();
});
gulp.task('default', ['serve']); //таск сервера
gulp.task('build', ['clean'], function() { //таск билда
gulp.start('copyFiles', 'styles', 'scripts', 'images', 'img');
setTimeout(function () {
gulp.start('htmlEdit');
}, 2000);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment