七、理解ESLint中的globals

关于eslint的配置文件中的env,先来看一下官方文档

新建测试项目,

1
2
3
$ mkdir lesson07
$ cd lesson07
$ yarn init -y&&yarn add -D eslint

同样的进行初始化,npx eslint --init

新建一个文件/src/index.js:

1
console.log(serverData);

然后npx eslint ./src进行eslint检测,报错error ‘serverData’ is not defined no-undef。当访问当前源文件内未定义的变量时,no-undef 规则将发出警告。如果你想在一个源文件里使用全局变量,推荐你在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。你可以使用注释或在配置文件中定义全局变量。

注释定义globals

直接在代码最上方使用注释,如下所示👇

1
2
/* global serverData */
console.log(serverData);

这样是只读的,代码中serverData不能被修改,会报错error Read-only global ‘serverData’ should not be modified no-global-assign。若想要serverData可以被修改,则如下所示👇

1
2
3
/* global serverData: writable */
serverData = 1;
console.log(serverData);

eslintrc配置文件定义globals

注释定义globals不适合大型项目开发,文件多的情况下不适用,宜直接在eslintrc配置文件中定义。

要在配置文件中配置全局变量,请将 globals 配置属性设置为一个对象,该对象包含以你希望使用的每个全局变量。对于每个全局变量键,将对应的值设置为 "writable" 以允许重写变量,或 "readonly" 不允许重写变量。

1
2
3
4
5
"globals": {
"serverData": "writable",
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},