From b8362da24f030b6a2f973429fb9b6a120cf36881 Mon Sep 17 00:00:00 2001 From: eric wang Date: Wed, 18 Nov 2020 15:50:16 +1100 Subject: [PATCH] chore: Add package.json cache to no-extraneous-dependencies rule --- src/rules/no-extraneous-dependencies.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/rules/no-extraneous-dependencies.js b/src/rules/no-extraneous-dependencies.js index 366a684c40..56bda2cb3a 100644 --- a/src/rules/no-extraneous-dependencies.js +++ b/src/rules/no-extraneous-dependencies.js @@ -7,6 +7,8 @@ import moduleVisitor from 'eslint-module-utils/moduleVisitor' import importType from '../core/importType' import docsUrl from '../docsUrl' +const depFieldCache = new Map() + function hasKeys(obj = {}) { return Object.keys(obj).length > 0 } @@ -49,9 +51,14 @@ function getDependencies(context, packageDir) { if (paths.length > 0) { // use rule config to find package.json paths.forEach(dir => { - const _packageContent = extractDepFields( - JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8')) - ) + const packageJsonPath = path.join(dir, 'package.json') + if (!depFieldCache.has(packageJsonPath)) { + const depFields = extractDepFields( + JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) + ) + depFieldCache.set(packageJsonPath, depFields) + } + const _packageContent = depFieldCache.get(packageJsonPath) Object.keys(packageContent).forEach(depsKey => Object.assign(packageContent[depsKey], _packageContent[depsKey]) )