Gulp 4 Template
var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var del = require('del');
var browserSync = require('browser-sync');
// VARIABLES ======================================================
var isDist = $.util.env.type === 'dist';
var outputFolder = isDist ? 'dist' : 'build';
var globs = {
sass: 'src/style/**/*.scss',
templates: 'src/templates/**/*.html',
assets: 'src/assets/**/*.*',
app: 'src/app/**/*.ts',
integration: 'src/tests/integration/**/*.js',
index: 'src/index.html'
};
var destinations = {
css: outputFolder + "/style",
js: outputFolder + "/src",
libs: outputFolder + "/vendor",
assets: outputFolder + "/assets",
index: outputFolder
};
// TASKS ===========================================================
gulp.task('sass', function () {
return gulp.src(globs.sass)
.pipe($.sass({style: 'compressed'}).on('error', $.sass.logError))
.pipe($.autoprefixer()) // defauls to > 1%, last 2 versions, Firefox ESR, Opera 12.1
.pipe(gulp.dest(destinations.css))
.pipe(browserSync.reload({stream: true}));
});
gulp.task('clean', function (cb) {
del(['dist/', 'build/'], cb);
});
gulp.task('browser-sync', function () {
return browserSync({
open: false,
server: {
baseDir: "./build"
},
watchOptions: {
debounceDelay: 1000
}
});
});
gulp.task('copy-vendor', function () {
return gulp.src(isDist ? vendoredLibsMin : vendoredLibs)
.pipe(gulp.dest(destinations.libs));
});
gulp.task('copy-assets', function () {
return gulp.src(globs.assets)
.pipe(gulp.dest(destinations.assets));
});
gulp.task('watch', function() {
gulp.watch(globs.sass, gulp.series('sass'));
gulp.watch(globs.appWithDefinitions, gulp.series('ts-lint', 'ts-compile'));
gulp.watch(globs.templates, gulp.series('templates'));
gulp.watch(globs.index, gulp.series('index'));
gulp.watch(globs.assets, gulp.series('copy-assets'));
});
gulp.task(
'build',
gulp.series(
'clean',
gulp.parallel('sass', 'copy-assets', 'ts-compile', 'templates', 'copy-vendor'),
'index'
)
);
gulp.task(
'default',
gulp.series('build', gulp.parallel('browser-sync', 'watch', 'karma-watch'))
);