fix(eslint-plugin): exclude `eslint-plugin-react` if `react` is not installed (#2849)

This commit is contained in:
Tommy Nguyen 2023-11-24 14:19:11 +01:00 коммит произвёл GitHub
Родитель 2ba27400c9
Коммит 9842205db4
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 25 добавлений и 6 удалений

Просмотреть файл

@ -0,0 +1,5 @@
---
"@rnx-kit/eslint-plugin": patch
---
Exclude `eslint-plugin-react` if `react` is not installed

Просмотреть файл

@ -9,12 +9,26 @@ const compat = new FlatCompat({
recommendedConfig: js.configs.recommended,
});
/**
* @param {string} spec
* @returns {boolean}
*/
function isInstalled(spec) {
try {
return Boolean(require.resolve(spec, { paths: [process.cwd()] }));
} catch (_) {
return false;
}
}
const usesReact = isInstalled("react");
const configs = ["plugin:@typescript-eslint/recommended"];
if (usesReact) {
configs.push("plugin:react-hooks/recommended", "plugin:react/recommended");
}
module.exports = [
...compat.extends(
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended",
"plugin:react/recommended"
),
...compat.extends(...configs),
{
languageOptions: {
// @ts-expect-error No declaration file for module
@ -43,7 +57,7 @@ module.exports = [
},
],
"@typescript-eslint/no-var-requires": "off",
"react/prop-types": "off",
...(usesReact ? { "react/prop-types": "off" } : {}),
},
settings: {
react: {