JavaScript、CSSのコード検証、整形ツールのまとめ

# 目的
開発に便利なJavaScript（JS）とCSSのコード検証、整形ツールに関する情報を要点を抑えて簡単にまとめる。
参考になりそうな記事もまとめて網羅的に調べやすい記事にしたい（更新していく）。

# 検証ツール?
検証ツールを使うことでコードが実行可能かどうかを検証できる。文法的に書き方が間違っているところなどが可視化されるため開発が捗る。

## JSの検証ツール
[npm trends](https://www.npmtrends.com/jslint-vs-jshint-vs-jscs-vs-eslint)によると、主要なJSの検証ツールの中で現状ではほぼESLintが使われている。なのでESLintのみまとめました。

![js_lint2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993117/8f583d6a-6102-e6fc-534c-4f9e214dd176.png)

すごい人気ダァ。

## [ESLint](https://eslint.org/)
### 概要
JSのコードの検証ツールとして2021年時点で一番人気。部分的に整形も可能。
2021年2月現在のバージョンは7.20.0。
エディタ上で検証結果をリアルタイムに表示させるためにエディタの拡張機能をインストールするのが良いでしょう。

主な機能、仕様としては以下

- エラーとするかどうかの検証ルールを自由にon/off可能
- 検証基準ルールが豊富、さらにたくさんのプラグインが公開されている
- 限定的だが整形ツールとしても使える
- 自分のプロダクトに合わせた独自ルールを作成することができる
- ECMAScript2015(ES6)以降も標準サポート。
- JSX記法もサポートしている。

### ESLint参考記事
1. [ESLint 最初の一歩](https://qiita.com/mysticatea/items/f523dab04a25f617c87d)
最初に読むならこの記事。ある程度の使い方はほぼわかるんじゃないかなって。

1. [Step by Stepで始めるESLint](https://qiita.com/howdy39/items/6e2c75861bc5a14b2acf)
かなり詳しく書いてあるのでもっと詳しく調べたいならこの記事。設定ファイルの種類、ルール設定の記述の方法など丁寧に書いてある。

## CSSの検証ツール
[npm trends](https://www.npmtrends.com/csscomb-vs-csslint-vs-stylelint)を見ると主要なパッケージの中ではstylelintが圧倒的にダウンロードされている模様。てことでstylelintだけまとめていく。


![css_lint2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993117/0991bbfb-4028-749a-dea2-4905213fad98.png)


## [stylelint](https://stylelint.io/)
### 概要
CSSのコードの検証ツールとして2021年2月時点で一番人気。
デフォルトの状態ではルールは設定されていない。ルールを一つ一つ設定するのも良いが、ざっくりオススメルールを導入したい場合は拡張機能の[stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard)を導入するのが良い。
ESLintと同様に、エディタ上で検証結果をリアルタイムに表示させるためにエディタの拡張機能をインストールするのが良いでしょう。

主な機能、仕様としては以下

- CSSは当然として、SCSS、Sass、Less、SugarSSも可能。
- 170を超える検証ルールがある
- 豊富なプラグインによる機能拡張
- プラグインを入れると自動整形も可能

### stylelint参考記事
1. [stylelintの導入方法と各ルール解説](https://qiita.com/DesignChips/items/cd5282dba553026757c8)
タイトル通り導入方法や代表的なルールの解説の記事です。

1. [ここがすごいぞ！ stylelint！](https://qiita.com/terrierscript/items/ff4f6972c988afbec3a8)
stylelintの概要、良いところなどがまとまっている。ESLintに書き方が似ているのは確かに助かりますね。stylelint-config-standard、PostCSSについて、ルール違反時のメッセージのカスタマイズなどの情報もまとめてある。2016年の記事なので若干古い箇所もあるやも。

1. [stylelintのorderモジュール選定](https://qiita.com/nabepon/items/4168eae542861cfd69f7)
cssのプロパティを自動ソートする拡張機能についての記事。コードが見やすくなるので是非導入したいですね。
選ぶモジュールとしては[stylelint-config-recess-order](https://github.com/stormwarning/stylelint-config-recess-order)が良いのでは、と締めてある。

1. [stylelintを使ってCSSプロパティのソートと整形を自動化する](https://oshin.tokyo/entry/2020-stylelint)
自動整形の手順が紹介されています。VSCodeの拡張機能stylelint-plusの導入が必要。


# 整形ツール?
設定したルールに基づいてコードを自動整形してくれるツールです。
と言ってもESLint,stylelintのどちらも自動整形できるのでは・・・？？とここまで調べていて思ったのですが、整形ツールを用いてでしか整形できないコードがあり、手軽で確実というメリットがあるようです。
今のところNode.js上で動く一番人気の整形ツールはPrettierのようです。他の記事がほとんど見つからなかったのでこちらもPrettierのみまとめます。

## [Prettier](https://prettier.io/)
2021年2月最新バージョンは2.2.1。
ESLintを整形ツールとして利用するには細かく設定が必要なため、ファイルが膨れ上がり、メンテナンスも大変となります。そのため検証はESLint、整形はPrettireで行うのが良さそう。
ただし設定によってはESLintと干渉しあってうまく働かないので注意が必要。

主な機能、仕様としては以下

- JavaScriptやCSSだけでなく様々な形式をサポートするコードフォーマッター。
- 設定が少なく単一で使うならすぐに導入することができる。



### Prettier参考記事
1. [Prettier 入門 ～ESLintとの違いを理解して併用する～](https://qiita.com/soarflat/items/06377f3b96964964a65d)
導入方法の紹介、整形ツールを導入する理由やESLintにPrettierを併用する理由がまとめられています。