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

时间:2016-06-18 02:10:45

标签: javascript node.js npm devops eslint

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

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

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

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

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

现在,我留下// eslint-disable-line或在本地修改.eslintrc文件并祈祷我从不会意外地检查出来。必须有更好的方法。

3 个答案:

答案 0 :(得分:7)

通过NODE_ENV来划分规则

您可以使用eslint配置(.js)的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"
}

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

查看https://github.com/jhurliman/precommit-hook了解更多信息。老实说,我认为所有这些都需要依赖于开发。你的生产不应该使用任何棉绒。

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