为 no-undef 设置忽略列表(定义来自其他来源的预期变量)

Dan*_*iel -2 javascript ecmascript-5 eslint

我有一些 js 代码,在测试过程中,这些代码被分成多个部分加载,并被连接起来并变得丑陋以供生产。

我有一个配置文件,它定义了一个变量myConfig并具有业务逻辑脚本,该脚本myConfig需要设置并全局可用。

这工作正常,并且在开发或生产期间没有错误。

问题是我想使用no-undefeslint 规则从丢失的声明中捕获其他变量和函数。所以我正在寻找定义一组预期变量的方法。

有没有办法定义这样的变量?

Ber*_*rgi 9

规则文档

任何对未声明变量的引用都会导致警告,除非该变量在/*global ...*/注释中明确提及,或globals在配置文件键中指定。这些的一个常见用例是,如果您有意使用在别处定义的全局变量(例如,在源自 HTML 的脚本中)。

更远,

指定全局变量

no-undef 规则将对已访问但未在同一文件中定义的变量发出警告。如果您在文件中使用全局变量,那么定义这些全局变量是值得的,这样 ESLint 就不会警告它们的使用。您可以使用文件内或配置文件中的注释来定义全局变量。

要使用 JavaScript 文件中的注释指定全局变量,请使用以下格式:

/* global var1, var2 */
Run Code Online (Sandbox Code Playgroud)

这定义了两个全局变量 var1 和 var2。如果您想选择性地指定这些全局变量永远不应该被写入(只读),那么您可以使用 false 标志设置每个变量:

/* global var1:false, var2:false */
Run Code Online (Sandbox Code Playgroud)

要在配置文件中配置全局变量,请使用 globals键并指明要使用的全局变量。将每个全局变量名称设置为等于true允许变量被覆盖或false禁止覆盖。例如:

{
    "globals": {
        "var1": true,
        "var2": false
   }
}
Run Code Online (Sandbox Code Playgroud)

在 YAML 中:

---
  globals:
    var1: true
    var2: false
Run Code Online (Sandbox Code Playgroud)

这些示例允许var1在您的代码中被覆盖,但不允许在var2.