我正在尝试使用配置文件的指定路径对单个文件运行 ESLint 的全局安装:
eslint FileToCheck.jsx --config "../path/to/config/.eslintrc.js"
但我得到了错误
ESLint 找不到插件“eslint-plugin-jsx-a11y”。这可能有几个不同的原因:
如果 ESLint 是全局安装的,那么请确保 eslint-plugin-jsx-a11y 也全局安装。全局安装的 ESLint 找不到本地安装的插件。
如果 ESLint 安装在本地,那么很可能是插件没有正确安装。尝试通过运行以下命令重新安装:
npm i eslint-plugin-jsx-a11y@latest --save-dev
所以看起来#1 是适用的,我需要在全球范围内安装eslint-plugin-jsx-a11y。我试着用
yarn global add eslint-plugin-jsx-a11y
并重新运行原始的 ESLint 命令,但它失败并出现相同的错误。我注意到在yarn global add
一些输出中说
“eslint-plugin-jsx-a11y@6.0.2”没有二进制文件
实际上,当我检查 ~/AppData/Local/Yarn/bin 时,我没有找到该插件的任何二进制文件(尽管我为 ESLint 找到了)。
如何使用此插件使 ESLint 全局运行?一个好的答案不会告诉我只是在本地安装它,而是实际上会回答给出的问题 - 如何通过全局安装的 ESLint 和插件来完成。
我在全球范围内使用纱线安装的软件包:
- 埃斯林特
- 通天塔核心
- babel-eslint
- eslint 插件导入
- eslint 插件反应
- eslint-plugin-jsx-a11y
- eslint-config-airbnb
这是我的 .eslintrc.js,可能相关也可能不相关:
module.exports = {
'extends': 'airbnb',
'plugins': [
'react',
'jsx-a11y',
'import'
],
'env': {
'browser': true
},
'parser': 'babel-eslint',
'rules': {
'prefer-template': 'error',
'comma-dangle': ['error', 'always-multiline'],
'import/no-extraneous-dependencies': 'off',
'react/prop-types': 'off',
'react/jsx-no-bind': 'off',
'jsx-a11y/no-static-element-interactions': 'off',
'jsx-a11y/no-noninteractive-element-interactions': 'off',
'jsx-a11y/alt-text': 'off',
'jsx-a11y/no-autofocus': 'off',
'eqeqeq': ['error', 'always', { 'null': 'ignore' }],
'no-use-before-define': ['error', { 'functions': false }],
'func-style': ['error', 'declaration', { 'allowArrowFunctions': true }],
'no-console': 'off',
'no-alert': 'off',
'no-continue': 'off',
'no-param-reassign': ['error', { 'props': false }],
'no-plusplus': ['error', { 'allowForLoopAfterthoughts': true }],
'one-var-declaration-per-line': ['error', 'initializations'],
'one-var': 'off', // Not needed because of one-var-declaration-per-line
'indent': ['error', 2, {
'FunctionDeclaration': { 'parameters': 'first' },
'SwitchCase': 1
}],
'no-restricted-syntax': [
'error',
{
selector: 'ForInStatement',
message: 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.',
},
{
selector: 'LabeledStatement',
message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
},
{
selector: 'WithStatement',
message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
},
],
}
};
if (process.env.FEATURE_FLAGS) {
const flags = Object.keys(JSON.parse(process.env.FEATURE_FLAGS));
module.exports.globals = flags.reduce(function (flagConfig, flag) {
flagConfig[flag] = false;
return flagConfig;
}, {});
}