Frontrend Advent Calendar 2014の14日目の記事です。
ご存知ですか、EditorConfig。
便利すぎてほんのり涙出てくるくらいなんですが、いまいち周囲で聞かないので流行っていないのではないかと思います。是非とも流行らせてください。平和のために!!
フロントエンドにあんま関係ない代物だけど、改行コード絡みで恨みつらみを聞く機会が多い気がするのでご容赦くださいまし。
なにそれ
様々なエディターで利用できる、共通の書式設定ファイルです。”.editorconfig”というファイルをプロジェクトのルートに配置しておくだけで、エンコード等の書式をそのディレクトリー配下のファイル編集時に固定できます。
もちろん設定自体は各エディターでやってもらえば良いんだけど、やっぱりほら、好みとかもあるわけじゃないですか。プロジェクトごとに設定変えるとかやってられないし。
サイト
こちらです。
設定
こんな項目を設定できます。
- 文字コード
- 改行コード
- インデント
これでwinとmacと両方からファイルをいじっても「めっちゃ文字化けしとる! ふざけんな!!」とか「なんか^Mが行末にくっついてる! しね!!」とか「ここだけインデントがタブじゃねーか! やろう、ぶっころしてやる。」とか、そういう喧嘩がなくなりますね。平和万歳!
他にも余分な空白を除去するとかそういう設定があります。
対応エディター
それぞれのプラグインで対応する感じです。
主要なところでは以下で利用可能です。
- Atom
- Brackets
- Emacs
- IntelliJ
- Sublime Text
- Vim
- MS Visual Studio
んあーCodaやEclipseはないのかな。対応してよーっていう要望だけ見つかった。
設定
プラグインのインストールはエディターごとに違うので、それぞれの配布ページの記述をご覧ください。
で、ファイルは例えばこんな感じ。
root = true
[*]
end_of_line = lf
charset = utf-8
indent_style = tab
indent_size = 2
これは私個人が通常利用している設定です。
ファイルの文法はMS-DOSのiniファイルのやつ? 手元のvimだと”dosini”という名前のシンタックスハイライトが有効になりました。
root=true
.htaccessみたいに、.editorconfigもディレクトリーごとに入れ子(?)にして配置する事ができます。で、その上位ディレクトリーを見に行くのを止める設定が、これ。なければファイルシステムのルートまで遡るのかな。
プロジェクトディレクトリーのルートに配置する場合は書いておきましょう。
ファイル
[*]
はファイル名のセクションで、全てのファイルを対象に設定しました。
ここで拡張子やファイル名を指定できます。例えば、前述の設定に加えHTMLだけはインデントにスペースを使いたいなぁーという場合は、追加してこんな感じにします。
root = true
[*]
end_of_line = lf
charset = utf-8
indent_style = tab
indent_size = 2
[*.html]
indent_style = space
他にもディレクトリーを指定したり、個別のファイル名でも指定可能です。
いくつかの個別ファイルで同じ設定を使用する場合は”{}”を利用し、”,”で区切って指定します。
[{package.json,bower.json,Gemfile}]
indent_size = 4
コメント
“#”で始めるとコメントになるみたいです。
リファレンス
そんなに量もないから書いちゃおう。
ファイル名指定
ファイル名の指定では以下のパターンが利用可能です。
記述 | 説明 |
---|---|
* | 任意の文字列、ただしパス区切り子”/”を除く |
** | 任意の文字列 |
? | 任意の1文字 |
name | “name”という名前のファイル |
!name | “name”という名前でないファイル |
{s1,s2,s3} | “s1”, “s2”, “s3″という名前のファイル |
ファイル名指定はどのディレクトリーにあっても合致します。(つまり”*.js”ならどの階層のJSファイルでも有効。) もし.editorconfigと同じディレクトリーのファイルだけを指定する場合は[./*]
のような指定になります。
複数指定とワイルドカードは一緒に使えない模様。あ、でもプラグインに依るかも。
設定
項目名は全て小文字。値に引用符は不要です。また値を空白にしておく事も可能です。
記述 | 値 | 説明 |
---|---|---|
charset | “latin1”, “utf-8”, “utf-8-bom”, “utf-16be” “utf-16le” | 文字コード |
end_of_line | “lf”, “cr”, “crlf” | 改行コード |
indent_size | 整数 | インデントの各階層の幅 |
indent_style | “tab”, “space” | インデントの種類 |
insert_final_newline | “true”, “false” | 末尾に空行を追加 |
root | “true” | このファイルより上位の設定を検索しない。必ず先頭に記述する |
tab_width | 整数 | タブ文字の幅。indent_sizeより優先される。省略時はindent_size |
trim_trailing_whitespace | “true”, “false” | 行末の空白を除去 |
文字コードにShift JISはないみたい。まあ日本専用の文字コードだしな。
いつまでも幸せに開発を続けましたとさ
めでたし、めでたし。とっぴんぱらりのぷう。