ESLint
情報が整理されている。
@202104時点の最新versionは7
設定ファイル
.eslint.jsonが設定ファイルになる。yml(.eslintrc.yaml), js(.eslintrc.js)なども使える。
解決しなくても、一度は見る。
主要key:
root: 設定が上流の上がるのを防ぐ
env, globals,parserOptionsについては、
env: An environment provides predefined global variables
ecmaのversionや nodeかbrowserかなど
browserなら
windowなどが既知のobjectとしてlintしてくれる?
nodeなら、
globals the additional global variables your script accesses during execution
eslintがexecするときに、別途(envで設定したものは、pre-defineされたものなので) global objectを設定したい?
parserOptions:
By default, ESLint expects ECMAScript 5 syntax.You can override that setting
普通は、TypeScriptを使うので、parsetOptions:{'parser: @typescirpt-eslint/parser}になる typescriptが作る ASTと eslintが作る ASTは違うけどそれをなんとかしてくれる。 extendsとplugins
rulesを中心に考える。plugins, extendsはruleを制御する機能
pluginはruleを追加できる
pluginは npm i hogePlulgin
rules, environment, processorsに機能追加できる
extendsはruleのsettingを設定できる。
ruleを拡張する。具体的には?
extends: "eslint:recommended"は、eslintでrecommendになってる項目をonにする。
eslint-recommended.js をみると、...Object.keys(buildInRules).filter(ruleId=>buildInRules[ruleid].meta.docs.recommended)...
また、(他の?)config fileのpathを記述して、その設定を取り込む?
shareable configとは、simply npm packages that export a configuration object
global や envも追加してる。
global? env?
extendsの中のplugin
extends:["plugin:react/recommended] であれば、pluginのreact/..にある configをextendにもってきている。
hoge pluginを入れて extends:[plugin:hoge..]と書けば、plugin: hogeを書かずとも、hoge pluginが利用されたことになる