From bdc014b8dd7aab5b1b57a51eeff9bc24f1646f95 Mon Sep 17 00:00:00 2001 From: Paul C Pederson Date: Mon, 10 Sep 2018 13:49:43 -0700 Subject: [PATCH] when watching entire directory, don't rebuild files outside said directory (#2491) --- bin/node-sass | 4 +++- test/cli.js | 25 ++++++++++++++++++++ test/fixtures/watching-dir-03/outside.scss | 1 + test/fixtures/watching-dir-03/src/index.scss | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/watching-dir-03/outside.scss create mode 100644 test/fixtures/watching-dir-03/src/index.scss diff --git a/bin/node-sass b/bin/node-sass index 54660ed6e..d73fc0ec4 100755 --- a/bin/node-sass +++ b/bin/node-sass @@ -246,7 +246,9 @@ function watch(options, emitter) { }); files.changed.forEach(function(file) { - if (path.basename(file)[0] !== '_') { + var srcDir = options.directory && path.join(process.cwd(), options.directory); + var isInclude = srcDir && file.indexOf(srcDir) === -1; + if (path.basename(file)[0] !== '_' && !isInclude) { renderFile(file, options, emitter); } }); diff --git a/test/cli.js b/test/cli.js index 78a80910c..72a929a15 100644 --- a/test/cli.js +++ b/test/cli.js @@ -387,6 +387,31 @@ describe('cli', function() { }, 200); }, 500); }); + + it.skip('should not compile changed files outside watched directory', function(done) { + var rootDir = fixture('watching-dir-03/'); + var destDir = fixture('watching-dir-03/dest'); + var srcDir = fixture('watching-dir-03/src'); + var outsideFile = path.join(rootDir, 'outside.scss'); + + fs.writeFileSync(outsideFile, ''); + + var bin = spawn(cli, [ + '--output', destDir, + '--watch', srcDir + ]); + + setTimeout(function () { + fs.appendFileSync(outsideFile, 'body{background:white}\n'); + setTimeout(function () { + bin.kill(); + var files = fs.readdirSync(rootDir); + assert.deepEqual(files, [ 'dest', 'outside.scss', 'src' ]); + rimraf(destDir, done); + }, 200); + }, 500); + }); + }); describe('node-sass in.scss --output out.css', function() { diff --git a/test/fixtures/watching-dir-03/outside.scss b/test/fixtures/watching-dir-03/outside.scss new file mode 100644 index 000000000..620aa31b0 --- /dev/null +++ b/test/fixtures/watching-dir-03/outside.scss @@ -0,0 +1 @@ +body{background:white} diff --git a/test/fixtures/watching-dir-03/src/index.scss b/test/fixtures/watching-dir-03/src/index.scss new file mode 100644 index 000000000..2b3ed9599 --- /dev/null +++ b/test/fixtures/watching-dir-03/src/index.scss @@ -0,0 +1 @@ +@import "outside";