为本地开发创建不同的 eslint 规则

Ani*_*ift 14 javascript node.js npm eslint devops

这是一个激励示例:我正在开发一些代码并想弄清楚出了什么问题,所以我有

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

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

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

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

现在,我只能// eslint-disable-line在本地修改.eslintrc文件并祈祷我不会意外地将其签入。一定会有更好的办法。

exm*_*axx 11

将您的规则分门别类 NODE_ENV

您可以使用.jseslint config ( eslintrc.js)版本并根据NODE_ENV变量对规则进行分支。

eslintrc.js

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

}
Run Code Online (Sandbox Code Playgroud)

中的脚本package.json

"scripts": {
  "lint": "eslint",
  "lint:prod": "NODE_ENV=production eslint"
}
Run Code Online (Sandbox Code Playgroud)

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


Ani*_*ift 6

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

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


小智 3

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

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

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