create-react-app eslint 问题,因为更高级别的文件夹包含另一个带有 node_modules 的应用程序

haz*_*nli 5 node.js npm reactjs

我有一个 git 存储库,其中有 2 个项目,一个环回应用程序(命名为应用程序)和一个使用 create-react-app 创建的反应应用程序(命名为客户端)。目录结构如下;

???app
? ???node_modules
? ???client
    ??node_modules
Run Code Online (Sandbox Code Playgroud)

环回项目(应用程序)使用 eslint,在 devDependencies 中有 eslint,客户端在 package.json 中没有 eslint。

客户端应用程序是用 create-react-app 创建的,所以当我运行 react-scripts 时,它在上层目录中找到 eslint,并抱怨它的版本,如果我删除 app\node_modules 一切正常。

那么react-scripts如何在上层目录中找到eslint,有没有办法告诉它不要检查任何其他node_modules文件夹,它应该只检查当前文件夹。

react-scripts 告诉我我可以将 SKIP_PREFLIGHT_CHECK=true 放在我的 .env 文件中,这样做是否安全,它是否在上层文件夹上运行 eslint 3.x,或者它是否运行安装所需的 5.6.0 版本在 client\node_modules 文件夹中?

我将为这个项目设置一个部署工具链,所以我需要确保它一直工作正常。 编辑: 我的 client\package.json 中的配置条目

"eslintConfig": {
    "extends": "react-app",
    "root": true
  },
Run Code Online (Sandbox Code Playgroud)

EDIT2: 重现问题的步骤:我的节点版本是:8.11.3

npx loopback-cli app (accept default options when prompted)
cd app
npm i
npx create-react-app client
cd client
npm i
npm run start (you should see the errors after this)
Run Code Online (Sandbox Code Playgroud)

EDIT3: 我最终弹出了反应脚本。

dsc*_*chu 0

尝试在您的文件夹中创建一个.eslintrc文件client,包含以下内容:

\n

.eslintrc

\n
{\n  "extends": "react-app"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

或者,这应该根据文档工作:

\n
{\n    "root": true\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

默认情况下,ESLint 将在所有父文件夹中查找配置文件,直至根目录。如果您希望所有项目都遵循某种约定,这可能很有用,但有时可能会导致意外结果。要将 ESLint 限制为特定项目,请将 "root": true 放置在 package.json 文件的 eslintConfig 字段中或项目\xe2\x80\x99s 根级别的 .eslintrc.* 文件中。一旦 ESLint 找到带有 "root": true 的配置,它就会停止在父文件夹中查找。

\n
\n

  • "eslintConfig": { "extends": "react-app", "root": true },我也尝试过。 (2认同)