eslint 不处理多个 package.json

Dyl*_* Ju 6 javascript lint npm eslint atom-editor

我的项目有两个package.json

\n\n
root folder\n\n\xe2\x94\x94 app ---- /public\n         \xe2\x94\x94 /styles\n         \xe2\x94\x94 /src\n         \xe2\x94\x94 package.json\n         \xe2\x94\x94 eslintrc.json\n         \xe2\x94\x94 webpack.config.js\n\n\xe2\x94\x94 server - /something\n         \xe2\x94\x94 /something\n\n\xe2\x94\x94 package.json\n\xe2\x94\x94 ...etc\n
Run Code Online (Sandbox Code Playgroud)\n\n

Atom 编辑器显示 lint 错误

\n\n
import React from \'react\';\n// \'react\' should be listed in the project\'s dependencies. Run \'npm i -S react\' to add it (import/no-extraneous-dependencies)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 package.json 中

\n\n
"dependencies": {\n  "@types/chart.js": "^2.6.8",\n  "@types/react": "^16.0.10",\n  "@types/react-dom": "^16.0.1",\n  "bootstrap": "^4.0.0-beta",\n  "chart.js": "2.6.0",\n  "font-awesome": "^4.7.0",\n  "history": "4.7.2",\n  "jwt-decode": "^2.2.0",\n  "prop-types": "^15.6.0",\n  "react": "^15.6.1",\n  "react-chartjs-2": "2.6.1",\n  "react-dom": "^15.6.1",\n  "react-router-dom": "4.2.2",\n  "react-transition-group": "^1.2.0",\n  "reactstrap": "^4.8.0",\n  "simple-line-icons": "^2.4.1"\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n

并在 eslintrc.json 中

\n\n
module.exports = {\n  "extends": "airbnb",\n\n  "env": {\n     "browser": true,\n     "node": true\n   },\n\n  "rules": {\n     "no-mixed-operators": [2, { "allowSamePrecedence": true }],\n     "react/no-find-dom-node": 1,\n     "react/no-string-refs": 1,\n     "react/no-unused-prop-types": 1, // TODO: enable\n     "jsx-a11y/no-static-element-interactions": 1, // TODO: enable\n     "no-plusplus": 1, // TODO: enable\n     "no-console": 0, // TODO: enable\n     "no-alert": 0,\n     "max-len": ["error", 120],\n     "no-underscore-dangle": ["error", { "allow": ["_isMounted"] }],\n     "import/no-extraneous-dependencies": ["error", {"devDependencies": true}],\n  },\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

我认为 eslint 将根文件夹中的 package.json 识别为标准。\n但我希望它忽略根文件夹中的 package.json 并识别 src 文件夹中的 package.json 。

\n\n

我能怎么做?

\n

小智 6

这可能不相关,但我要注意的第一件事是您可能需要将 ESLint 配置从 重命名为eslintrc.json.eslintrc.json名称前加一个点)。可能不是问题的根源,但可能会干扰分层解决方案。您可以在此处查看多种配置扩展格式:https://eslint.org/docs/user-guide/configuring#configuration-file-formats

具体到import/no-extraneous-dependencies规则,我认为您可能正在寻找的配置选项是packageDir. 引用他们的存储库中的文档:

还有一个名为 的选项packageDir,该选项用于指定包含package.json当前工作目录的文件夹的路径。

"import/no-extraneous-dependencies": ["error", {"packageDir": './some-dir/'}]

希望这可以帮助!

来源:

https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependency.md


Dyl*_* Ju 3

我自己解决了这个问题。

在 .eslintrc.json 中添加了 "packageDir": "./src"

"rules" : {
   ""import/no-extraneous-dependencies": ["error", {"devDependencies": true, "packageDir": "./src"}],
Run Code Online (Sandbox Code Playgroud)