bs_base-8.x-1.x-dev/gulp-tasks.js
gulp-tasks.js
// Define gulp tasks.
module.exports = function (gulp, sass, plugins, options) {
'use strict';
const fs = require('fs');
const { Transform } = require('stream');
// Modern debug logger using native Node.js Transform streams
function createDebugTransform() {
return new Transform({
objectMode: true,
transform(file, encoding, callback) {
console.log('Processing:', file.relative);
callback(null, file);
}
});
}
// Processor options.
options.processors = [
plugins.reporter(options.processors.reporter)
];
// Post CSS options.
options.postcssOptions = [
plugins.autoprefixer(options.autoprefixer)
];
// Defining gulp tasks.
gulp.task('sass', function () {
// Disable 'Browserslist: caniuse-lite is outdated.' warning.
process.env.BROWSERSLIST_IGNORE_OLD_DATA = true;
const task = gulp.src(options.sass.src + '/**/*.scss');
// Extract src and dest, pass the rest to sass compiler
const {src, dest, ...sassOptions} = options.sass;
task
.pipe(sass(sassOptions).on('error', sass.logError))
.pipe(plugins.postcss(options.postcssOptions))
.pipe(plugins.stripCssComments())
.pipe(gulp.dest(options.sass.dest));
return task;
});
gulp.task('sass:dev', function () {
process.env.BROWSERSLIST_IGNORE_OLD_DATA = true;
const task = gulp.src(options.sass.src + '/**/*.scss', {sourcemaps: true});
// Extract src and dest, pass the rest to sass compiler
const {src, dest, ...sassOptions} = options.sass;
task
.pipe(sass(sassOptions).on('error', sass.logError))
.pipe(createDebugTransform())
.pipe(plugins.postcss(options.postcssOptions))
.pipe(gulp.dest(options.sass.dest, {sourcemaps: '.'}));
return task;
});
gulp.task('clean:css', function () {
return plugins.del([
'css/**/*'
]);
});
// Gulp run all tasks.
gulp.task('default', gulp.series('clean:css', 'sass'));
gulp.task('prod', gulp.series('default'));
gulp.task('dev', gulp.series('sass:dev'));
gulp.task('clean', gulp.series('clean:css'));
// Gulp watches.
gulp.task('watch', function () {
gulp.watch(options.sass.src + '/**/*.scss', ['sass']);
});
gulp.task('watch:dev', function () {
gulp.watch(options.sass.src + '/**/*.scss', ['sass:dev']);
});
};
