From 7a9e8d490e1c3efb566868b40feaecc5c2e1f523 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Wed, 19 Jan 2022 11:14:05 +0800 Subject: [PATCH 1/3] Simplify `expandDirectories` option handling --- index.js | 47 +++++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/index.js b/index.js index 0961820..6833272 100644 --- a/index.js +++ b/index.js @@ -94,44 +94,31 @@ const generateGlobTasksInternal = (patterns, taskOptions) => { return globTasks; }; -const globDirectories = (task, fn) => { - let options = {}; - if (task.options.cwd) { - options.cwd = task.options.cwd; - } - - if (Array.isArray(task.options.expandDirectories)) { - options = { - ...options, - files: task.options.expandDirectories, - }; - } else if (typeof task.options.expandDirectories === 'object') { - options = { - ...options, - ...task.options.expandDirectories, - }; - } - - return fn(task.pattern, options); -}; +const getDirGlobOptions = (options, cwd) => Array.isArray(options) + ? {cwd, files: options} + : {...options, cwd}; const generateTasks = async (patterns, options) => { const globTasks = generateGlobTasksInternal(patterns, options); - if (!options.expandDirectories) { + const {cwd, expandDirectories} = options; + + if (!expandDirectories) { return globTasks; } + const dirGlobOptions = getDirGlobOptions(expandDirectories, cwd); + const tasks = await Promise.all( globTasks.map(async task => { - const {options} = task; + const {pattern, options} = task; const [ patterns, ignore, ] = await Promise.all([ - globDirectories(task, dirGlob), - dirGlob(options.ignore), + dirGlob(pattern, dirGlobOptions), + dirGlob(options.ignore, {cwd}), ]); options.ignore = ignore; @@ -145,14 +132,18 @@ const generateTasks = async (patterns, options) => { const generateTasksSync = (patterns, options) => { const globTasks = generateGlobTasksInternal(patterns, options); - if (!options.expandDirectories) { + const {cwd, expandDirectories} = options; + + if (!expandDirectories) { return globTasks; } + const dirGlobOptions = getDirGlobOptions(expandDirectories, cwd); + return globTasks.flatMap(task => { - const {options} = task; - const patterns = globDirectories(task, dirGlob.sync); - options.ignore = dirGlob.sync(options.ignore); + const {pattern, options} = task; + const patterns = dirGlob.sync(pattern, dirGlobOptions); + options.ignore = dirGlob.sync(options.ignore, {cwd}); return patterns.map(pattern => ({pattern, options})); }); }; From 66f9416fc9d640fc5cb6d4799af3b0fdac9b4969 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Wed, 19 Jan 2022 11:23:55 +0800 Subject: [PATCH 2/3] Avoid `cwd: undefined` --- index.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 6833272..29d9398 100644 --- a/index.js +++ b/index.js @@ -94,9 +94,10 @@ const generateGlobTasksInternal = (patterns, taskOptions) => { return globTasks; }; -const getDirGlobOptions = (options, cwd) => Array.isArray(options) - ? {cwd, files: options} - : {...options, cwd}; +const getDirGlobOptions = (options, cwd) => ({ + ...(cwd ? {cwd} : {}), + ...(Array.isArray(options) ? {files: options} : options), +}); const generateTasks = async (patterns, options) => { const globTasks = generateGlobTasksInternal(patterns, options); @@ -118,7 +119,7 @@ const generateTasks = async (patterns, options) => { ignore, ] = await Promise.all([ dirGlob(pattern, dirGlobOptions), - dirGlob(options.ignore, {cwd}), + dirGlob(options.ignore, cwd ? {cwd} : undefined), ]); options.ignore = ignore; @@ -143,7 +144,7 @@ const generateTasksSync = (patterns, options) => { return globTasks.flatMap(task => { const {pattern, options} = task; const patterns = dirGlob.sync(pattern, dirGlobOptions); - options.ignore = dirGlob.sync(options.ignore, {cwd}); + options.ignore = dirGlob.sync(options.ignore, cwd ? {cwd} : undefined); return patterns.map(pattern => ({pattern, options})); }); }; From d799b75411dd6a7ee166bb9ee50d40aa25ab185e Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Wed, 19 Jan 2022 11:29:35 +0800 Subject: [PATCH 3/3] Dry --- index.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 29d9398..f4f2369 100644 --- a/index.js +++ b/index.js @@ -108,7 +108,8 @@ const generateTasks = async (patterns, options) => { return globTasks; } - const dirGlobOptions = getDirGlobOptions(expandDirectories, cwd); + const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd); + const ignoreExpandOptions = cwd ? {cwd} : undefined; const tasks = await Promise.all( globTasks.map(async task => { @@ -118,8 +119,8 @@ const generateTasks = async (patterns, options) => { patterns, ignore, ] = await Promise.all([ - dirGlob(pattern, dirGlobOptions), - dirGlob(options.ignore, cwd ? {cwd} : undefined), + dirGlob(pattern, patternExpandOptions), + dirGlob(options.ignore, ignoreExpandOptions), ]); options.ignore = ignore; @@ -139,12 +140,13 @@ const generateTasksSync = (patterns, options) => { return globTasks; } - const dirGlobOptions = getDirGlobOptions(expandDirectories, cwd); + const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd); + const ignoreExpandOptions = cwd ? {cwd} : undefined; return globTasks.flatMap(task => { const {pattern, options} = task; - const patterns = dirGlob.sync(pattern, dirGlobOptions); - options.ignore = dirGlob.sync(options.ignore, cwd ? {cwd} : undefined); + const patterns = dirGlob.sync(pattern, patternExpandOptions); + options.ignore = dirGlob.sync(options.ignore, ignoreExpandOptions); return patterns.map(pattern => ({pattern, options})); }); };