ESLintのシンジケート:一度構成すれば、どこにでも拡張できます
コードでは、アイススケートのように、スタイルが重要です。 読みやすさ、一貫性、チームの調和はすべて、ルールの衒学的な追求を受け入れることの利点です。 ただし、これらの利点のどれよりも、明確に定義されたスタイルガイドは、一般的な落とし穴を回避し、コードレビューをバイクシェッドから遠く離れて、実際のソフトウェア設計に焦点を当てるのに役立ちます。
しかし、明確に定義されたルールのセットがあればよいのと同じように、冷たくて気持ちの悪いマシンの傭兵的な執行なしには何もありません。 ESLint と入力し、一見網羅的な構成可能なルールのセットと真に網羅的なルールプラグインのファミリーを使用します。
eslint --init
アンケートの自動化から始める場合でも、eslint:recommended
(同梱されています!)または airbnb をいくつかのカスタムニットで手動で拡張する場合でも、多少の手間がかかる場合があります。あなたが望む方法で物事を手に入れましょう。 一度だけいじって、組織全体またはプロジェクトファミリー全体で結果を共有できれば、きっとうれしいでしょう。
真実はそれがかなり簡単だと言いました。 好みの方法でルールを構成することから始めます。 ドメインで分割された複数のファイルを使用するのが好きです。
上記の例ほどきめ細かくはないかもしれませんが、あなたはその考えを理解しています。
次に、エントリポイントを使用してすべてをまとめます。 それをindex.js
と呼びましょう。 この構成をJSモジュールとして公開しているため、.eslintrc
だけでは機能しないことを忘れないでください。
いくつかの簡単なポイント。 このファイルは、必要に応じて単純または複雑にすることができます。 すべてのルールとグローバルを含めることができ、外部ファイル(以下のように)とモジュールからそれらを拡張することもできます。 拡張の場合、ルールの優先順位が昇順であり、最も高い配列インデックスがキャプテンシートを占めることに注意してください。
module.exports = {
"extends": [
// Least Important
"./rules/quotes.js",
"./rules/quotes-override.js"
// Most Important
]
}
ファイルの名前は、package.json
のmain
プロップによって示されている限り重要ではありません。
package.json
と言えば。 たまたま外部パッケージを使用したり、サードパーティの構成を拡張したりした場合は、ここでそれらのピアの依存関係を宣言します。 eslint
は、明らかな理由から、オプションではありません。
{
"name": "eslint-config-your-name-here",
"version": "0.0.1",
"author": {
"name": "Chomper Missisippiensis"
},
"private": false,
"license": "MIT",
"main": "index.js",
"peerDependencies": {
"eslint": ">= 3"
}
}
それでおしまい。 変更をコミットします。 それらを押します。 また、npmユーザーアカウントを持っていると仮定して、次の直感的なコマンドを使用して、光沢のある新しい構成パッケージを公開します。
npm publish
npmユーザー名がありませんか? 問題ない。 ✨npm adduser
は、開始するために必要なCLIコマンドです。
パッケージの名前は、package.json
のname
キーに由来しています。 従来の命名パターンeslint-config-your-name-here
は、2つの理由で使用できます。1)パッケージの目的が非常に明確になることと、2)モジュールを使用するときにeslint-config
の部分を省略できることです。 your-name-here
を拡張するだけです。
しかし、どうすればそれを使用できますか?
簡単なことはありません。 あなたのスタイルに適合させたいプロジェクトに飛び乗って、eslint
とあなたの設定a laをインストールしてください:
npm i eslint eslint-config-your-name-here
次に、.eslintrc
を作成し、構成をインポートします。
{
"extends": "your-name-here"
}
そしてそれはそれです。 npmでモジュールを公開するのがいかに簡単かはちょっとクレイジーですよね?
👉この種のシンジケーションの最大の利点は、1つの場所で変更を加え、ルールが消費されるすべての場所にそれらが伝播するのを確認できることです。 かなりかっこいいですね