| // 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 |
| ) |
| ) |
| ); |