ESLintのShareable Configで、JavaScript用とは別にTypeScript用のパッケージを提供する場合のパターンについて調べました。
経緯
自分が管理しているJavaScript/TypeScriptのリポジトリにおいて、中身がほとんど同じESLintの設定ファイルがいくつか存在します。
これではメンテナビリティ的によろしくないので、共通化できそうな部分をShareable Configとして公開することを検討中です。
その際、JavaScript用とTypeScript用のパッケージをそれぞれ提供することで、リポジトリごとに使用するパッケージを選択できるようにしたいと思います。
そこで、世のShareable Configではどのような手法がとられているのか調べてみることにしました。
調査方法
npmjs.comで以下のクエリで検索し、参考になりそうなパッケージをピックアップしました。
eslint-config-adidas-typescript
-
dependenciesにeslint-config-adidas-es9が含まれる - ユーザー自身で
eslint-config-adidas-es9をインストールする必要はない
eslint-config-salesforce-typescript
- 依存にeslint-config-salesforceは含まれない
-
eslint-config-salesforceとは完全に独立しているので、インストールする必要はない
eslint-config-standard-with-typescript
-
dependenciesにeslint-config-standardが含まれる - ユーザー自身で
eslint-config-standardをインストールする必要はない
eslint-config-twilio-ts
-
dependenciesにeslint-config-twilioが含まれる - ユーザー自身で
eslint-config-twilioをインストールする必要はない
eslint-config-wantedly-typescript
- 依存にeslint-config-wantedlyは含まれない
-
eslint-config-wantedlyとは完全に独立しているので、インストールする必要はない
まとめ
TypeScript用パッケージから見たJavaScript用パッケージとの依存関係は、以下の通りです。
| TypeScript用パッケージ | JavaScript用パッケージ | 依存関係 |
|---|---|---|
| eslint-config-adidas-typescript | eslint-config-adidas-es9 | dependencies |
| eslint-config-salesforce-typescript | eslint-config-salesforce | - |
| eslint-config-standard-with-typescript | eslint-config-standard | dependencies |
| eslint-config-twilio-ts | eslint-config-twilio | dependencies |
| eslint-config-wantedly-typescript | eslint-config-wantedly | - |
所感
パッケージ名のサフィックスは-tsのほうが短くてよさそうなものですが、-typescriptとしているものが多いのが意外でした。
TypeScript用パッケージの依存にJavaScript用パッケージを含めるかどうかは悩みどころですが、そのあたりは先にJavaScript用パッケージをつくってから決めてもいいかもしれません。