From 15201d86aa3b5246242293f0fd4bd9346073aad0 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 15 May 2017 10:16:47 +0100 Subject: [PATCH] Prevent reskindex -w from running when file names have not changed --- scripts/reskindex.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/scripts/reskindex.js b/scripts/reskindex.js index 1db22f9e10e..9516614fa55 100755 --- a/scripts/reskindex.js +++ b/scripts/reskindex.js @@ -8,8 +8,15 @@ var chokidar = require('chokidar'); var componentIndex = path.join('src', 'component-index.js'); var componentsDir = path.join('src', 'components'); var componentGlob = '**/*.js'; +var prevFiles = []; function reskindex() { + var files = glob.sync(componentGlob, {cwd: componentsDir}).sort(); + if (!filesHaveChanged(files, prevFiles)) { + return; + } + prevFiles = files; + var header = args.h || args.header; var packageJson = JSON.parse(fs.readFileSync('./package.json')); @@ -37,7 +44,6 @@ function reskindex() { strm.write("module.exports.components = {};\n"); } - var files = glob.sync(componentGlob, {cwd: componentsDir}).sort(); for (var i = 0; i < files.length; ++i) { var file = files[i].replace('.js', ''); @@ -54,6 +60,20 @@ function reskindex() { console.log('Reskindex: completed'); } +// Expects both arrays of file names to be sorted +function filesHaveChanged(files, prevFiles) { + if (files.length !== prevFiles.length) { + return true; + } + // Check for name changes + for (var i = 0; i < files.length; i++) { + if (prevFiles[i] !== files[i]) { + return true; + } + } + return false; +} + // -w indicates watch mode where any FS events will trigger reskindex if (!args.w) { reskindex();