【问题标题】:Creating different eslint rules for local development为本地开发创建不同的 eslint 规则
【发布时间】:2016-10-19 22:39:20
【问题描述】:

这是一个鼓舞人心的例子:我正在开发一些代码并想弄清楚出了什么问题,所以我有

function foo() {
    console.log("Look its 2016 and I'm still printf debugging");
}

除了...我们的构建过程将 esLint 作为构建系统的一部分运行,并且如果 esLint 失败,设计甚至会阻止运行构建管道的其余部分。 error Unexpected console statement no-console

我实际上想要的是设置一个 dev 环境,其中某些规则被关闭(或转换为警告),然后是一个 production 环境,并打开了严格的规则。而且我希望能够轻松地在本地切换它,以便在将代码提交到 CI 服务器之前验证我的代码是否有效。

我找不到任何相关的代码 sn-ps 来实现这一点,这让我很难过。我的构建环境只是 npm 脚本(仅使用 esLint CLI + package.json),但我很乐意从另一个构建环境移植解决方案。

现在,我只剩下// eslint-disable-line 或在本地修改.eslintrc 文件,并祈祷我永远不会不小心将其签入。一定有更好的办法。

【问题讨论】:

    标签: javascript node.js npm devops eslint


    【解决方案1】:

    通过NODE_ENV 分支您的规则

    您可以使用 .js 版本的 eslint 配置 (eslintrc.js) 并根据 NODE_ENV 变量分支您的规则。

    eslintrc.js:

    rules: {
     
      'no-console':
        process.env.NODE_ENV === 'production'
          ? 'error'
          : 'warn'
    
    }
    

    package.json 中的脚本:

    "scripts": {
      "lint": "eslint",
      "lint:prod": "NODE_ENV=production eslint"
    }
    

    您将使用一个版本的规则和您的 CI 另一个版本(假设您的 CI 上的 NODE_ENV 设置为 production)。

    【讨论】:

      【解决方案2】:

      来自 github 上的相关线程:https://github.com/eslint/eslint/issues/6460#issuecomment-226967834

      看起来我要做的是创建一个dev.eslintrc 或类似的,然后扩展主要的.eslintrc。然后我可以根据需要使用命令行参数在两个规则集之间切换。

      【讨论】:

        【解决方案3】:

        为什么不使用 pre-commit 钩子,在任何提交发生之前检查您的代码。如果本地或使用 .eslintrc 文件,您始终可以使用注释禁用任何您想要的规则。

        查看https://github.com/jhurliman/precommit-hook 了解更多信息。老实说,我认为所有这些都需要依赖于开发。您的产品不应运行任何 lint。

        最后,我会添加一些任务运行程序,例如 grunt 或 gulp,这样您就可以运行您的 lint、单元测试和您的代码所需的任何其他健全性检查。

        【讨论】:

        • 预提交钩子很难,因为在没有一些 cp 钩子 .git/hooks 的情况下将其推送到单个机器并不容易。我宁愿只添加一些具有 .eslintrcdev 和 .eslintrcprod 的 shell 脚本,并根据需要将一个或另一个复制到 .eslintrc。我想避免进入关于任务执行者的政治讨论。只是为了澄清以防被误解:我们正在根据需要使用 make + npm + node 的任务运行器。
        • 我认为我最理想的做法是能够运行 eslint --env dev ...eslint --dev prod(今天支持),但随后在我的 eslintrc 中有规则看起来像这样 @ 987654324@ 不受支持。不管是否有人有一个聪明的方法来解决这个问题,我都会看看我是否可以把这个功能融入到 eslint 中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 2019-05-03
        • 2016-08-29
        • 2017-07-20
        • 2019-05-04
        • 2012-06-21
        • 1970-01-01
        相关资源
        最近更新 更多