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用パッケージをつくってから決めてもいいかもしれません。