EditorConfigの概要
EditorConfigはインデントや改行コードなど、コーディングスタイルを統一するための仕組みです。EditorConfigを導入すると、様々なエディタやIDE間で共通のルールを設定したり、プロジェクトごとに設定を変更・統一することができます。EditorConfigの導入で得られるメリットを下記に記載しました。
- チームで共通のコーディングスタイルを設定できる
- 様々なエディタで共通のコーディングスタイルを設定できる
- プロジェクト毎に異なるコーディングスタイルを設定できる
- JavaScriptやCSSなどファイルタイプ毎に異なるコーディングスタイルを設定できる
EditorConfigの正体は、.editorconfigという非常にシンプルな設定ファイルです。この設定に対応したエディタは、その設定を読み込んで保存時に自動的にフォーマットしてくれます。Visual Studio Codeはもちろん、Atom、Sublime、Vimなど様々なエディタが対応しています。
EditorConfigが有効になっているエディタは、プロジェクトディレクトリに.editorconfigがあればそのディレクトリ以下のファイルすべてにコーディングスタイルを適用します。Gitの管理対象に加えておけば、他のユーザはその設定をそのまま共有することができて便利です。
EditorConfigのインストール
Visual Studio Codeの場合はプラグインが用意されているので、インストールしてください。
- EditorConfig for VS Code
https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig
コーディングスタイルの設定
EditorConfigをインストールしたらあとは適用したいプロジェクトに.editorconfigファイルを作成し、必要な設定を記述します。エクスプローラビューのフォルダ内で右クリックし、[Generate .editorconfig]を選択することでも.editorconfigファイルが作成されます。
ファイル例
root = true
[*]
# インデント時のスタイル設定(tab/space)
indent_style = tab
# インデント時のサイズ設定
indent_size = 4
# 改行コード設定(lf/cr/crlf)
end_of_line = lf
# 文字コード設定(latin1/utf-8/utf-8-bom/utf-16be/utf-16le/...)
charset = utf-8
# 文末スペースの設定(true=削除)
trim_trailing_whitespace = true
# 最終行の改行設定(true=改行あり)
insert_final_newline = true
EditorConfigの設定書式はプロパティ名 = 値です。
プロパティの設定
「EditorConfig for VS Code」プラグインでサポートされているプロパティは下記になります。
プロパティ | 値 |
---|---|
root | EditorConfigは.editorconfigファイルが見つかるまで上位階層を探索します。この探索を同階層に限定したい場合はfalseに設定します。通常はプロジェクトのルートディレクトリに.editorconfigを設置し、その下層すべてに反映したいので、rootはtrueに設定します。 |
indent_style | インデントのスタイルを設定します。値にはspaceかtabを設定します。 |
indent_size | インデントのサイズ(数値)を設定します。値には数値かtabを設定します。空白4つ分のインデントにしたい場合、indent_size=4とします。 |
end_of_line | 改行コードを設定します。値にはlf、cr、crlfが指定可能です。 |
charset | 文字コードを設定します。値にはlatin1、utf-8、utf-8-bom、utf-16be、utf-16leなどが指定可能です。 |
trim_trailing_whitespace | 文末のスペースを削除するかどうかの設定です。 |
insert_final_newline | 最終行に改行を入れるかどうかの設定です。tureにすると保存時に自動で最終行に改行を追加します。 |
すべてのプロパティと値は大文字と小文字を区別しません。プロパティが指定されていない場合、エディター設定が使用されます。
対象ファイルの指定
ファイル例にもある[*]という記号はファイルの種類を指定しています。アスタリスクは任意の文字を表すので、[*]ですべてのファイルを対象にしています。JSファイルとCSSファイルだけを対象にしたい場合は次のように書けます。
[*.js,*.css]
ファイル名やディレクトリ名に使えるワイルドカードパターンには次のようなものがあります。
記号 | 説明 |
---|---|
* | パス区切り文字(/)を除く文字列 例:[*.js] |
** | 特定ディレクトリの任意の文字列 例:[libs/**.js] |
? | 任意の1文字 |
[name] | 指定したファイル名 例:[common.js] |
[!name] | 指定したファイル名以外 例:[!common.js] |
{s1,s2,s3} | ファイル名s1 s2 s3のいずれか 例:[{.js,.css}] |