18
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Soucetreeからのコミット時にeslintとstylelintとprettierする

Last updated at Posted at 2022-12-01

本日(2022.12.01)から始まりました 「un-T factory! XA Advent Calendar 2022」 の一番槍をつとめさせていただきます。どうぞよろしくおねがいします🙇‍♂️

唐突ですが…
「リント、してますか?」 (※長嶋●雄の声で)
野球の監督

…というわけで、今回はタイトルのとおり 「Soucetreeからのコミット時にeslintとstylelintとprettierする」 設定をご紹介いたします。

個人のクセによる無駄な差分の発生や構文エラーは、作業の効率や開発者の士気を低下させてしまいます😔
チーム開発する際には各種linterを活用して、コーディングルールを遵守したエラーのないコードで運用していきたいものですよね。

Gitへのコミット時に自動的に構文チェックと整形が実行される…そんな便利な開発環境(フロントエンド)の設定方法です。

対象ファイルはとりあえず以下の3種とします。

*.pug
*.ts
*.scss

※コミットメッセージについてのチェックは今回は割愛します。

以下、使用するツール(アプリ)です。

Git
husky
eslint
stylint
prettier

Sourcetree
VSCode

eslintの設定

eslint とは JavaScript(TypeScript) のための静的検証ツールです。

> eslint - npm

チェック項目は .eslintrc.json というファイルを作成し設定します。
膨大な項目数にめまいがしそうですが、標準で用意されている eslint:recommended のようなプリセットを活用し、特定の項目を "rules" で上書きすることもできます。

> ESLint 設定を作成する技術

stylelintの設定

stylelint とは CSS の構文チェックツールです。

> stylelint - npm

チェック項目は .stylelintrc というファイルを作成し設定します。
こちらもeslint同様、プリセットを活用するのもおすすめです。

プロパティの並び順を入れ替えるようにすると、管理しやすくなり効率がアップします。

> Sass(SCSS) の stylelint ルールは stylelint-config-sass-guidelines に任せたい ++ Gaji-Laboブログ

prettierの設定

prettier とはソースコードを整形してくれるツール(コードフォーマッター)です。

> prettier - npm

多くのファイル形式やエディタに対応しています。

> Prettier · Opinionated Code Formatter

huskyの設定

husky とは Git hooksを使用しコミットやプッシュ時に任意のコマンドを走らせる ことができるnpmパッケージです。

> Husky - Git hooks

以下、コミット時に eslint , stylelintprettier を実行させる設定例です。
これによりコミット時にはいやがおうにもコードは綺麗に整形され、エラーがある場合にはそのエラーを解消するまでコミットできなくなります。

package.json
{
  "scripts": {
    "lint:css": "stylelint 'src/scss/**/*.scss'",
    "lint:js": "eslint 'src/ts/**/*.ts'",
    "format": "prettier --write 'src/**/*.{pug,scss,ts}'",
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*.ts": "yarn lint:js",
    "src/**/*.scss": "yarn lint:css",
    "src/**/*.{js,ts,json,css,scss}": "yarn format"
  }
}

Soucetreeの設定

Soucetree でコミットした際に husky を実行するには、ちょっとした設定が必要になります。

> huskyのpre-commitフックがSourceTreeでコミットするときに動かない - Qiita

npx にpathを通すため、 .huskyrcユーザホームディレクトリ (例ではhoge)に設置する必要があります。

.huskyrc
PATH="/Users/hoge/.anyenv/envs/nodenv/shims:$PATH"

※anyenvでnodenvをインストールしている場合

Soucetree「環境設定」 から 「高度な設定」 が選択できない!という方は、アプリの言語設定が 「日本語」 になっていると思われます。
一度、 「Englsh」 などの他言語に変更し再起動すると 「高度な設定」 が選択できるようになります。
設定変更後、また 「日本語」 に戻すことも可能です。

VSCodeの設定

VSCode でファイルの変更を保存した際に 各種lintprettier が実行されれば、より便利ですよね。
以下の拡張機能をインストールして、 VSCodeの設定(setting.json) を以下のように設定すればオッケーです。

> Prettier - Code formatter - Visual Studio Marketplace
> ESLint - Visual Studio Marketplace
> Stylelint - Visual Studio Marketplace

setting.json
{
  "editor.defaultFormatter": "esbenp.prettier-vscode", 
  "editor.formatOnSave": true, 
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.fixAll.stylelint": true
  }
}

まとめ

各種lintやフォーマットは、チーム開発はもちろんですが、個人開発でもとても有用な設定だと思います。
環境構築は多少面倒かもしれませんが、その労力以上の見返りはあると感じます。
また、各種lintの設定は非常に奥が深いため、一度用意した設定ファイルを盲目的に流用するのではなく、定期的に見直しアップデートしていく必要があると思いました🤓

参考サイト

> PrettierとESLint・Stylelintの併用 – rinoguchi's techlog
> Prettier 入門 ~ESLintとの違いを理解して併用する~ - Qiita
> huskyとcommitlintでgit commitメッセージの形式をチェックする|SHIFT Group 技術ブログ|note

18
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?