My code currently watches my sass files and outputs the styles to a css folder. But what it is doing is creating all css files based on the sass files, I only want it to create a main.css file. My code so far is:
var gulp = require('gulp'),
sass = require('gulp-sass'),
livereload = require('gulp-livereload');
watchSass = require("gulp-watch-sass"),
minifyCss = require('gulp-minify-css'),
rename = require('gulp-rename'),
$ = require('gulp-load-plugins')({ lazy: true });
gulp.task('sass', function () {
return gulp.src('./src/scss/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./public/css/'))
.pipe(livereload());
});
gulp.task("sass:watch", function () {
livereload.listen();
gulp.watch('./src/scss/**/*.scss', gulp.series('sass'))
});
Any ideas?
I tried the following to no avail:
gulp.task('sass', function () {
return gulp.src('./src/sass/main.scss')
.pipe(sass().on('error', sass.logError))
.pipe(livereload())
.pipe(gulp.dest('./public/css/'))
});
gulp.task("sass:watch", function () {
livereload.listen();
gulp.watch('./src/sass/main.scss', gulp.series('sass'))
});
This is an example of a build css function of one of my gulp files:
const autoprefixer = require("autoprefixer");
const gulp = require("gulp");
const sass = require("gulp-sass");
const plumber = require("gulp-plumber");
const rename = require("gulp-rename");
const postcss = require("gulp-postcss");
const uglify = require("gulp-uglify");
const cssnano = require("cssnano");
// CSS: Build & Minify Css
function css() {
return gulp
.src("./scss/app.scss")
.pipe(plumber())
.pipe(sass({ outputStyle: "expanded" }))
.pipe(gulp.dest("./css/"))
.pipe(rename({ suffix: ".min" }))
.pipe(postcss([autoprefixer(), cssnano()]))
.pipe(gulp.dest("./css/"))
}
This is a part of my app.scss :
// VARIABLES
@import 'variables.scss';
@import 'colors.scss';
// LAYOUT
@import 'layout/layout.scss';
@import 'layout/header.scss';
When I want to build i run:
gulp css
But you can always trigger this function on your watch