TSLintとstyleLintと合わせてPrettierを使ってみる
コードの整形を自動で出来ると開発を効率化へつながります。
そこでコードの整形を自動でできないかと検討した時に Prettier というツールがあることを知ったので
TSLintとstyleLintと合わせてPrettierを使って見ました。
Prettierとは?
コードを整形してくれるフォーマッタです。
2017年に登場してからGithub上で多くのStarを集めていて大変注目されているようです。
またJavaScriptに関わる多くの言語フォーマットに対応していて
フロントエンド開発に非常に便利なツールです。
対応言語
- ES2017を含むJavaScript
- JSX
- Flow
- TypeScript
- CSS, Less, and SCSS
- JSON
- GraphQL
- Markdown, including GFM
- YAML
※2018年7月現在
参考 公式ドキュメント
https://prettier.io/docs/en/index.html
LintとPrettierについて
LintとPrettierはどちらもコード整形を行うことができるため一部の役割が被っていますが
Lintはコード記述に関するルールや品質に関するチェックを担当
Prettierはコード整形を自動で行うことを担当
といった感じでそれぞれの担当が分かれます。
環境
- Yarn 1.7.0
- Prettier 1.13.7
- TSLint 5.10.0
- stylelint 9.3.0
早速使ってみる
今回は TSLint と stylelint を合わせて使って見ます。
パッケージのインストール
パッケージをまとめてインストールします。
terminal$ yarn add -D prettier-stylelint stylelint-config-standard stylelint-config-recess-order prettier tslint-config-prettier tslint-plugin-prettier tslint
styleLintの設定
.styleLintrc.yml を作成します。
今回は stylelint-config-standard というルールのプラグインと
stylelint-config-recess-order という並び順のプラグインを使用しています。
.styleLintrc.yml---
extends:
- stylelint-config-standard
- stylelint-config-recess-order
rules:
indentation: 2
declaration-colon-newline-after: "always-multi-line"
value-list-comma-newline-after: "never-multi-line"
package.json に以下を追記します。
prettier の設定を書かないとエラーになりました。
下記参照。
package.json "prettier": {},
"scripts": {
"format:css": "prettier-stylelint --quiet --write ./src/css/style.css"
}
cssはサンプルとして適当に作ります。
src/css/style.cssbody {
padding: 0;
margin: 0;
position: static;
width: auto;
height: auto;
background-color: #efefef;
font-color: rgba(0, 0, 0, .87);
}
yarnコマンド で実行します。
terminal$ yarn format:css
$ prettier-stylelint --quiet --write ./src/css/**/*.css
`{ "parser": "postcss" }` is deprecated. Prettier now treats it as `{ "parser": "css" }`.
✨ Done in 2.02s.
これで ./src/css/style.css が整形されて出力されます。
もし以下のようなエラーが出た場合は?
terminal$ prettier-stylelint --quiet --write ./src/css/style.css
prettier-stylelint [ERROR]: There was an error formatting "./src/css/style.css"
TypeError: Cannot set property 'useTabs' of null
package.json へ以下の追記すると改善します。
package.json "prettier": {},
TSLintの設定
tslint.json を作成します。
prettier のプラグインの設定と
tslint-config-airbnb というルールのプラグインを設定しています。
tslint.json{
"rulesDirectory": ["tslint-plugin-prettier"],
"extends": ["tslint-config-airbnb", "tslint-config-prettier"],
"rules": {
"prettier": [
true, {
"singleQuote": true,
"semi": true
}
]
}
}
package.json に以下を追記します。
package.json "prettier": {},
"scripts": {
"format:ts": "tslint --fix ./src/**/*.ts*"
}
サンプルとして適当にtsファイルを作成しまし。
src/js/app.tsclass Student {
fullName: string;
constructor(public firstName: string, public middleInitial: string, public lastName: string) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = new Student("Jane", "M.", "User");
document.body.innerHTML = greeter(user);
yarnコマンド で実行します。
terminal$ yarn format:ts
$ tslint --fix ./src/**/*.ts*
✨ Done in 3.65s.
これで ./src/**/*.ts が整形されて出力されます。
参考
Prettier ドキュメント
https://prettier.io/docs/en/install.html
articleJest と Prettier の連携:コード品質とテストの両立
articleTypeScript プロジェクトのための Prettier・ESLint 最適設定ガイド
articlePrettier と ESLint の違いと併用パターン
article2018年7月6日TSLintとstyleLintと合わせてPrettierを使ってみる
articleLodash を使う/使わない判断基準:2025 年のネイティブ API と併用戦略
articleMistral の始め方:API キー発行から最初のテキスト生成まで 5 分クイックスタート
articleLlamaIndex で最小 RAG を 10 分で構築:Loader→Index→Query Engine 一気通貫
articleJavaScript structuredClone 徹底検証:JSON 方式や cloneDeep との速度・互換比較
articleLangChain Retriever レシピ集:BM25/ハイブリッド/再ランキングの定石
articlehtmx 運用 SLO 設計:サーバ応答・スワップ完了・履歴遷移の 3 指標を可視化
blogiPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
blogGoogleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
blog【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
blogGoogleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
blogPixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
blogフロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
review今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
reviewついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
review愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
review週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
review新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
review科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来