blob: dd37dd7544e379a37a5339a76ccac1f567b8b39c [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
'use strict';
const Fiber = require('fibers');
const gulp = require('gulp');
const sass = require('gulp-sass');
const sassLint = require('gulp-sass-lint');
const sourcemaps = require('gulp-sourcemaps');
const autoprefixer = require('gulp-autoprefixer');
const shell = require('gulp-shell');
const pathRoot = process.cwd();
const pathCss = pathRoot + '/../';
const pathSass = pathRoot + '/scss/';
const filesSass = pathRoot + '/scss/*.scss';
const browserVersions = [
"last 1 versions",
"last 20 firefox versions",
"last 20 chrome versions",
"last 5 opera versions",
"ie >= 9",
"last 5 edge versions",
"safari >= 9",
"last 3 ios versions",
"last 5 android versions",
"last 5 ie_mob versions",
"last 5 and_chr versions"
];
gulp.task('lintSassFix',
shell.task('npm run fix')
);
const buildSass = (style) => {
const buildSass = () => { // function and name is required here for gulp-task naming-process
return gulp.src(filesSass)
.pipe(sourcemaps.init())
.pipe(
sass({
fiber: Fiber,
outputStyle: style
})
.on('error', sass.logError))
.pipe(autoprefixer({
browsers: browserVersions, //todo remove all current prefix rules from css
cascade: false // prefix indentation in one line?
}))
.pipe(sourcemaps.write('./src/sourcemaps'))
.pipe(gulp.dest(pathCss));
}
return buildSass;
};
const lintSass = () => {
return gulp.src(pathSass + '**/*.scss')
.pipe(sassLint())
.pipe(sassLint.format());
};
const watchSass = () => {
gulp.watch(pathSass + '**/*.scss',
gulp.series(
'lintSassFix',
lintSass,
buildSass('expanded')
)
);
};
gulp.task('default',
gulp.series(
'lintSassFix',
lintSass,
buildSass('expanded'),
gulp.parallel(
watchSass
)
)
);