From 8804a489e1d8625437d0058b393b3f56363243cd Mon Sep 17 00:00:00 2001 From: zthxxx Date: Mon, 4 Jan 2021 13:13:00 +0800 Subject: [PATCH] fix: fix wrong require resolver with relative path in monorepo - add support require relative resolver file in monorepo, for simplify local debugging - add docs for cases why need to tryRequire --- utils/package.json | 3 +-- utils/resolve.js | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/utils/package.json b/utils/package.json index 6e8ebddfb..8956bd28a 100644 --- a/utils/package.json +++ b/utils/package.json @@ -26,7 +26,6 @@ }, "homepage": "https://github.com/benmosher/eslint-plugin-import#readme", "dependencies": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" + "debug": "^2.6.9" } } diff --git a/utils/resolve.js b/utils/resolve.js index fc8f85de9..63fce2fd8 100644 --- a/utils/resolve.js +++ b/utils/resolve.js @@ -1,8 +1,6 @@ 'use strict' exports.__esModule = true -const pkgDir = require('pkg-dir') - const fs = require('fs') const Module = require('module') const path = require('path') @@ -174,14 +172,26 @@ function resolverReducer(resolvers, map) { throw err } -function getBaseDir(sourceFile) { - return pkgDir.sync(sourceFile) || process.cwd() -} function requireResolver(name, sourceFile) { // Try to resolve package with conventional name - let resolver = tryRequire(`eslint-import-resolver-${name}`, sourceFile) || + let resolver = + /** + * normal abbreviation for third-party package + * like config `webpack` convert to `eslint-import-resolver-webpack` + */ + tryRequire(`eslint-import-resolver-${name}`, sourceFile) || + /** + * normal full-name for third-party package or absolute path + * like config `@xxx/webpack-resolver` or `/your/absolute/path/resolver.js` + */ tryRequire(name, sourceFile) || - tryRequire(path.resolve(getBaseDir(sourceFile), name)) + /** + * relative path to current work dir in monorepo + * like config `./utils/simple-custom-resolver.js` + * convert to absolute path `//utils/simple-custom-resolver.js` + * for both all of monorepo + */ + tryRequire(path.resolve(name)) if (!resolver) { const err = new Error(`unable to load resolver "${name}".`)