simplr-gulp
Version:
Fully functional gulpfile.js implementation. Tailored for Single Page Application. Written in TypeScript.
53 lines (52 loc) • 2.09 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const builder_base_1 = require("../builder-base");
const paths_1 = require("../../paths/paths");
const gulp = require("gulp");
const cleanCSS = require("gulp-clean-css");
const sass = require("gulp-sass");
const autoprefixer = require("gulp-autoprefixer");
const sourcemaps = require("gulp-sourcemaps");
const logger_1 = require("../../utils/logger");
const cache = require("gulp-cached");
class StylesBuilder extends builder_base_1.BuilderBase {
build(production, builder, done) {
let sassResults = gulp
.src(paths_1.Paths.Builders.AllFiles.InSourceApp(".scss"))
.pipe(cache("styles"));
if (!production) {
sassResults = sassResults.pipe(sourcemaps.init());
}
sassResults = sassResults
.pipe(sass()
.on('error', (error) => {
this.errorHandler(error);
done();
}));
sassResults = sassResults.pipe(autoprefixer());
if (!production) {
sassResults = sassResults.pipe(sourcemaps.write());
}
else {
sassResults = sassResults.pipe(cleanCSS({ processImportFrom: ['local'], rebase: false }));
}
sassResults.pipe(gulp.dest(paths_1.Paths.Directories.BuildApp))
.on('end', done);
}
errorHandler(error) {
if (error != null) {
if (error.relativePath != null && error.line != null && error.column != null && error.messageOriginal != null) {
logger_1.LoggerInstance.withType("SCSS").error(`${error.relativePath}[${error.line}, ${error.column}]: ${error.messageOriginal}`);
}
else {
logger_1.LoggerInstance.error("Error in 'gulp-sass' plugin: \n", error);
}
}
else {
logger_1.LoggerInstance.error(`Unknown error in 'gulp-sass' plugin.`);
}
}
initBuilder(production) {
return undefined;
}
}
exports.StylesBuilder = StylesBuilder;