javascript - 如果 eslint 未验证,如何配置 Parcel 以退出构建并出现错误

标签 javascript reactjs eslint parceljs

我正在使用 Parcel 构建一个 React 应用程序。我设置了一个我喜欢的 eslint 配置,并使用 VSCode 工具来捕获 eslint 错误并在编码时修复它们。到目前为止,该应用程序构建正确。所以一切都很好。

但是,作为额外的预防措施,我想使用我的配置设置 Parcel 来运行 eslint,并在我没有遵循 eslint 规则时停止构建过程并输出错误,无论是在运行开发服务器还是构建时用于生产。

我通过谷歌搜索知道了这个 npm 包,但该包没有自述文件,并且我在包文档中找不到设置说明:https://www.npmjs.com/package/@parcel/validator-eslint

仅供引用,我使用的是parcel 1.12.3,但如果有必要,我愿意更改为parcel 2.x.x。

谢谢!

最佳答案

在 Parcel v2 中,您可以使用 @parcel/validator-eslint 插件来完成此操作。方法如下:

  1. 在您的项目中安装 eslint@parcel/validator-eslint。请注意,此插件目前仅适用于 eslint v7 或更早版本,因为 this bug (希望我们能尽快修复;-))

    yarn add -D eslint@7 @parcel/validator-eslint
    
  2. 使用您的配置将 .eslintrc.json 文件添加到您的项目中。如果可以的话,最好使用静态配置文件(例如 .json.yaml),而不是动态配置文件(例如 .js) ,因为这有助于提高包裹的缓存效率和速度(请参阅 docs )。这是一个有效的基本文件示例,但您可以通过查看 eslint docs 来扩展它以满足您的需求。 :

    {
        "env": {
            "browser": true
        },
        "extends": [
            "eslint:recommended"
        ],
        "parserOptions": {
            "ecmaVersion": 2020,
            "sourceType": "module"
        }
    }
    
  3. 通过在项目根目录添加 .parcelrc 文件(或修改现有的 .parcelrc 文件)来告诉配置 Parcel 使用 JavaScript 文件插件包含下面的“validators”条目):

    {
       "extends": "@parcel/config-default",
       "validators": {
           "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [
              "@parcel/validator-eslint"
           ]
       }
    }
    

现在,如果你有一个 eslint 错误,它应该像这样通过包冒出来:

🚨 Build failed.

@parcel/validator-eslint: ESLint found 1 errors and 0 warnings.

  C:\Users\ansteg\Projects\parcel-eslint-example\src\index.js:2:7
    1 | // This unused variable should trigger an ESLint error.
  > 2 | const unusedVar = "Hello!";
  >   |       ^^^^^^^^^^ 'unusedVar' is assigned a value but never used.
    3 |

参见this github repo一个工作示例。

关于javascript - 如果 eslint 未验证,如何配置 Parcel 以退出构建并出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71375095/

相关文章:

javascript - 为什么 JavaScript 的 bind() 在这里没有像我期望的那样工作?

javascript - XMLHttpRequest 更改 UTF-8 中的文本

reactjs - Jest 快照在本地工作,但在 Travis CI 上始终失败

javascript - 当React 16中不推荐使用 `mainPanel`时,如何使用 `this.refs`?

javascript - Ajax Jquery 调用不工作

javascript - Img one ('load' , ...) 并不总是在 IE 中触发 - 我放弃了

javascript - SetState 不是 OnChange 上的函数

node.js - 如何使用 "Blank Node.js"模板在 Visual Studio 2019 中调试 React 应用程序

javascript - 哪个 ESLint 规则适用于 Promise/Arrow 函数缩进?

continuous-integration - 如何在ESLint中禁止显示“没有文件与模式匹配”消息?