Skip to content

Instantly share code, notes, and snippets.

@renebentes
Last active June 6, 2019 19:46
Show Gist options
  • Select an option

  • Save renebentes/c875d5614abd9b17c3253ca6ff941465 to your computer and use it in GitHub Desktop.

Select an option

Save renebentes/c875d5614abd9b17c3253ca6ff941465 to your computer and use it in GitHub Desktop.
BrowserSync com php via gulp
const { dest, parallel, series, src, task, watch } = require('gulp');
const connect = require('gulp-connect-php'),
plumber = require('gulp-plumber'),
browserSync = require('browser-sync'),
cache = require('gulp-cache'),
imagemin = require('gulp-imagemin'),
autoprefixer = require('gulp-autoprefixer'),
less = require('gulp-less'),
sourcemaps = require('gulp-sourcemaps'),
rename = require('gulp-rename'),
useref = require('gulp-useref'),
gulpif = require('gulp-if'),
minifyCss = require('gulp-clean-css'),
uglify = require('gulp-uglify');
// concat = require('gulp-concat'),
const paths = {
php: { src: './src/**/*.php', dest: './dist' },
images: {
src: './src/images/**/*.+(png|jpg|jpeg|gif|svg)',
dest: './dist/images'
},
styles: { src: './src/less/main.less', dest: './dist/css' },
scripts: { src: './src/js/main.js', dest: './dist/js' },
fonts: {
src: ['node_modules/font-awesome/fonts/**/*.*', './src/fonts/**/*.*'],
dest: './dist/fonts'
}
};
function reload(done) {
browserSync.reload();
done();
}
function serve() {
connect.server({ base: './dist/' }, function() {
browserSync.init({
proxy: 'http://localhost:8000',
notify: false
});
});
}
function html(done) {
src(paths.php.src)
.pipe(useref({ searchPath: ['./src', '.'] }))
.pipe(gulpif('*.js', uglify()))
.pipe(gulpif('*.css', minifyCss()))
.pipe(dest(paths.php.dest));
done();
}
function images(done) {
src(paths.images.src)
.pipe(
cache(
imagemin([
imagemin.gifsicle({ interlaced: true }),
imagemin.jpegtran({ progressive: true }),
imagemin.optipng({ optimizationLevel: 5 }),
imagemin.svgo({
plugins: [{ removeViewBox: true }, { cleanupIDs: false }]
})
])
)
)
.pipe(dest(paths.images.dest));
done();
}
function watches() {
// serve(paths.styles.src, series(styles, reload));
// serve(paths.scripts.src, series(scripts, reload));
watch(paths.images.src, series(images, reload));
// serve(paths.fonts.src, series(fonts, reload));
watch(paths.php.src, series(html, reload));
}
function styles(done) {
src(paths.styles.src)
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(less())
.on('error', console.error.bind(console))
.pipe(
autoprefixer({
browsers: ['> 1%', 'last 2 versions', '> 5%', 'Firefox ESR']
})
)
.pipe(sourcemaps.write('.'))
.pipe(dest(paths.styles.dest))
.pipe(browserSync.stream());
done();
}
function scripts(done) {
src(paths.scripts.src)
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(sourcemaps.write('.'))
.pipe(dest(paths.scripts.dest))
.pipe(browserSync.stream());
done();
}
function fonts(done) {
src(paths.fonts.src)
.pipe(plumber())
.pipe(dest(paths.fonts.dest));
done();
}
task('images', images);
task('default', parallel(fonts, scripts, styles, images, html));
task('watch', parallel(watches, serve));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment