Search code examples
csssassgulp

How to target single file in gulp.js file


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'))
});

Solution

  • 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