Migrating to v3.0.0
迁移到v3.0.0
ESLint v3.0.0是第三个主要版本。我们在此版本中进行了几次重大更改,但是,我们认为这些更改足够小,以至于不需要对ESLint用户进行重大更改。本指南旨在引导您完成这些更改。
删除对Node.js<4的支持
使用ESLint v3.0.0,我们将放弃对4之前的Node.js版本的支持。Node.js 0.10和0.12处于维护模式,而Node.js 4是当前的LTS版本。如果您使用的是旧版本的Node.js,我们建议尽快升级至少Node.js 4。如果您无法升级到Node.js 4或更高版本,那么我们建议您继续使用ESLint v2.x,直到准备好升级Node.js.
重要提示:
我们不会更新ESLint v2.x版本。所有错误修复和增强将在ESLint v3.x.
需要配置才能运行
ESLint v3.0.0现在要求您使用配置来运行。配置可以是以下任何一种:
- 一
.eslintrc.js
,.eslintrc.json
,.eslintrc.yml
,.eslintrc.yaml
,或.eslintrc
文件,无论是在您的项目或主目录。
2. 在命令行上使用--rule
(或CLIEngine using rules
)传递的配置选项。
3. 使用-c
(或CLIEngine使用configFile
)在命令行上传递的配置文件。
4. 使用该baseConfig
选项为CLIEngine提供基本配置。
如果ESLint找不到配置,那么它会抛出一个错误并要求您提供一个配置。
此更改旨在帮助经常感到困惑的新ESLint用户,除了报告解析器错误之外,ESLint默认不执行任何操作。我们预计此次更改对大多数已建立的用户的影响最小,因为您更有可能拥有配置文件。
解决方法:
无论何时运行ESLint,都应确保使用配置。但是,通过--no-eslintrc
在命令行上传递选项或为CLIEngine中的useEslintrc
选项设置为false
,您仍然可以在不进行配置的情况下运行ESLint 。
要创建新配置,请使用eslint --init
。
更改 "eslint:recommended"
{
"extends": "eslint:recommended"
}
在3.0.0中,以下规则被添加到"eslint:recommended"
:
no-unsafe-finally
有助于捕捉finally
可能不像您想象的那样的子句。
no-native-reassign
之前是no-undef
中的一部分,但因为作为另一个规则的一部分而没有意义,所以被拆分出来。no-native-reassign
规则会在您尝试覆盖只读全局变量时发出警告。
require-yield
有助于识别没有yield
关键字的生成器功能。
以下规则已从"eslint:recommended"
中删除:
comma-dangle
因为Internet Explorer 8及更早版本在对象文字属性中发现悬空逗号时会抛出语法错误,所以建议使用这种方法。但是,Internet Explorer 8在2016年1月已停止使用,所有其他主动浏览器都允许悬挂逗号。因此,我们认为摇晃逗号现在是一个风格问题,而不是可能的错误。修改了以下规则:
complexityeslint:recommended
如果您在不指定最大值的情况下打开规则,则会使用硬编码默认值11 。现在默认是20.该规则实际上总是默认为20,但是eslint:recommended
错误地覆盖了它。
解决方法:
如果您想模仿eslint:recommended
v2.x中的工作方式,可以使用以下方法:
{
"extends": "eslint:recommended",
"rules": {
"no-unsafe-finally": "off",
"no-native-reassign": "off",
"complexity": ["off", 11],
"comma-dangle": "error",
"require-yield": "error"
}
}
CLIEngine#executeOnText()更改
CLIEngine#executeOnText()
方法已经改变为更喜欢的工作CLIEngine#executeOnFiles()
。在v2.x中,CLIEngine#executeOnText()
默认情况下会警告忽略的文件,并且没有办法选择退出这些警告,CLIEngine#executeOnFiles()
但默认情况下并未警告忽略的文件,并允许您选择加入警告。该CLIEngine#executeOnText()
方法现在也默认不会警告忽略的文件,并允许您选择新的第三个参数(一个布尔型,true
以警告忽略的文件并且false
不警告)。
解决方法:
如果您目前在您的项目中正在使用CLIEngine#executeOnText()
,请执行以下操作:
var result = engine.executeOnText(text, filename
你可以使用这个来获得等价的行为:
var result = engine.executeOnText(text, filename, true
如果您不希望忽略文件警告输出到控制台,则可以省略第三个参数或传递false
。