From fa13e98f2623b3331154aab96740f142d2662582 Mon Sep 17 00:00:00 2001 From: xzyfer Date: Thu, 15 Jan 2015 15:31:11 +1100 Subject: [PATCH] Use sass-graph for accurate sass watching --- bin/node-sass | 17 ++++++++++++++--- package.json | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/bin/node-sass b/bin/node-sass index 52c591ee3..eebb018c5 100755 --- a/bin/node-sass +++ b/bin/node-sass @@ -5,6 +5,7 @@ var Emitter = require('events').EventEmitter, meow = require('meow'), replaceExt = require('replace-ext'), stdin = require('get-stdin'), + grapher = require('sass-graph'), render = require('../lib/render'); /** @@ -183,10 +184,20 @@ function watch(options, emitter) { gaze.add(dir); gaze.on('error', emitter.emit.bind(emitter, 'error')); + var graph = grapher.parseDir(options.src, { loadPaths: options.includePath }); + gaze.on('changed', function(file) { - options = getOptions([file], options); - emitter.emit('warn', '=> changed: ' + file); - render(options, emitter); + var files = [file]; + graph.visitAncestors(file, function(parent) { + files.push(parent); + }); + + files.forEach(function(file) { + if (path.basename(file)[0] === '_') return; + options = getOptions([path.resolve(file)], options); + emitter.emit('warn', '=> changed: ' + file); + render(options, emitter); + }); }); } diff --git a/package.json b/package.json index b52839558..4df0f42d4 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "object-assign": "^2.0.0", "replace-ext": "0.0.1", "request": "^2.48.0", + "sass-graph": "^1.0.1", "shelljs": "^0.3.0" }, "devDependencies": {