126 lines
2.7 KiB
JavaScript
126 lines
2.7 KiB
JavaScript
const gulp = require('gulp');
|
|
const del = require('del');
|
|
const yargs = require('yargs');
|
|
const browserSync = require('browser-sync').create();
|
|
const gulpTasks = require('./gulp/tasks');
|
|
|
|
|
|
const PRODUCTION = yargs.argv.production;
|
|
|
|
|
|
/**
|
|
* Runs a local http server and watch for files changes
|
|
*/
|
|
function serve() {
|
|
browserSync.init({
|
|
port: 3001,
|
|
server: {
|
|
baseDir: './dist'
|
|
}
|
|
});
|
|
|
|
gulp.watch(['src/twig/**/*', 'src/data/**/*'], {ignoreInitial: false}, twig).on('change', browserSync.reload);
|
|
gulp.watch(['src/scss/**/*'], {ignoreInitial: false}, scss);
|
|
gulp.watch(['src/vendor/**/*'], {ignoreInitial: true}, vendor).on('change', browserSync.reload);
|
|
gulp.watch(['src/images/**/*'], {ignoreInitial: false}, images).on('change', browserSync.reload);
|
|
gulp.watch(['src/svg/**/*.svg'], {ignoreInitial: false}, svg).on('change', browserSync.reload);
|
|
gulp.watch(['src/js/**/*'], {ignoreInitial: false}, js).on('change', browserSync.reload);
|
|
}
|
|
|
|
|
|
/**
|
|
* Removes dist directory
|
|
*/
|
|
function clean() {
|
|
return del(['dist']);
|
|
}
|
|
|
|
|
|
/**
|
|
* Compiles twig files to html
|
|
*/
|
|
function twig() {
|
|
return gulpTasks.twig().pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
|
|
/**
|
|
* Compiles scss files to css
|
|
*/
|
|
function scss() {
|
|
return gulpTasks.scss({production: PRODUCTION}).pipe(gulp.dest('dist')).pipe(browserSync.stream());
|
|
}
|
|
|
|
|
|
/**
|
|
* Copies vendor directory to dist directory
|
|
*/
|
|
function vendor() {
|
|
return gulpTasks.vendor().pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
|
|
/**
|
|
* Copies images to dist directory
|
|
*/
|
|
function images() {
|
|
return gulpTasks.images().pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
|
|
/**
|
|
* Compiles svg sprite
|
|
*/
|
|
function svg() {
|
|
return gulpTasks.svg().pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
|
|
/**
|
|
* Compiles js
|
|
*/
|
|
function js() {
|
|
return gulpTasks.js().pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
|
|
/**
|
|
* Watch task
|
|
*/
|
|
function watch () {
|
|
gulp.watch(['src/twig/**/*', 'src/data/**/*'], {ignoreInitial: false}, twig);
|
|
gulp.watch(['src/scss/**/*'], {ignoreInitial: false}, scss);
|
|
gulp.watch(['src/vendor/**/*'], {ignoreInitial: false}, vendor);
|
|
gulp.watch(['src/images/**/*'], {ignoreInitial: false}, images);
|
|
gulp.watch(['src/svg/**/*.svg'], {ignoreInitial: false}, svg);
|
|
gulp.watch(['src/js/**/*'], {ignoreInitial: false}, js);
|
|
}
|
|
|
|
|
|
/**
|
|
* Build task
|
|
*/
|
|
function build(cb) {
|
|
gulp.series(clean, gulp.parallel(twig, scss, vendor, images, svg, js))(cb);
|
|
}
|
|
|
|
|
|
/**
|
|
* Default task
|
|
*/
|
|
gulp.task('default', function(cb) {
|
|
build(cb);
|
|
});
|
|
|
|
|
|
exports.serve = gulp.series(vendor, serve);
|
|
exports.clean = clean;
|
|
exports.twig = twig;
|
|
exports.scss = scss;
|
|
exports.vendor = vendor;
|
|
exports.images = images;
|
|
exports.svg = svg;
|
|
exports.js = js;
|
|
|
|
exports.watch = gulp.series(clean, watch);
|
|
exports.build = build; |