Lukáš Řádek
Lukáš Řádek

Reputation: 1431

Gulp Sass Watch Run only changed and dependencies

I am trying to figure out how to watch SCSS files for changes and then run task (gulp-ruby-sass) only for those that changed(added,removed) and their dependencies (@import).

My watch task code is:

gulp.task('sass-watch', function(){
  gulp.watch('dev/scss/*.scss', ['sass']);
});

My "sass" task code is:

gulp.task('sass', function(event) {
  return sass('dev/scss/*.scss')
          .pipe(changed('dist/css'))
          .on('error', sass.logError)
          .pipe(gulp.dest('dist/css'));
});

Sice sass take all files in folder anyway, this cannot work as I want to, but I noticed interesting thing. In my command-line I get following logs, when "sass-watch" is triggered by saving style2.scss file.

[13:38:01] Using gulpfile C:\1HLAVNI\Lukas\Webdesign\lukasradek\gulpfile.js
[13:38:01] Starting 'sass-watch'...
[13:38:01] Finished 'sass-watch' after 42 ms
[13:38:03] Starting 'sass'...
[13:38:03] write ./\style_combined.css
[13:38:03] write ./\style2.css
[13:38:03] Finished 'sass' after 416 ms

Something logs write style_combined.css and style2.css which is exactly how the dependencies are. (styl2.scss is imported to style_combined.scss). So this means, that something knows how the dependencies are set. Problem is, that I don't know what is that something. I cannot get that info elsewhere, only in final log. If I can get that info somewhere in code, I would be able to use for triggering the task only for changed files and dependencies.

Any idea, what might emit those logs?

I tried to strip my code to bare minimum and the logs are still present even when I remove the content of "sass" task. The logs disappeared after I removed ['sass'] trigger from gulp.watch.

Upvotes: 1

Views: 415

Answers (0)

Related Questions