LoginSignup
2
2

More than 3 years have passed since last update.

aspidaのeslintプラグインを作りました

Posted at

はじめに

aspida、使ってますかー?
私は愛用しています。プロジェクト数はあんまり多くないですが…

aspidaというのはTypeScript向けのシステムで、簡単に特徴とメリットを説明しておくと、REST APIの型定義をファイルに記述しておくことで、補完の効くオブジェクト形式で使えるというものです。 型安全の幸せな世界が待っています。 (aspida - GitHub)

問題:間違いに気付かない

aspidaを使っていると少し困ったことに遭遇します。
定義ファイルは次のような見た目なのですが、TypeScriptネイティブの機能を利用しているため、余計なプロパティがあってもエラー等が出ません。

export interface Methods {
  get: {
    query: {
      key: value;
    };
    resbody: { // resBodyの間違い!
      key: value;
    };
  };
}

私の場合、間違ったコードを書いては原因が分からず、何度もaspidaのソースを見にいきました。1

  • 間違ったプロパティが存在したときエラーを発生させるようPull Requestを出してもよかったのですが、意図して余計な要素を置いている可能性もありますし、迂闊に変更するべきではないと考えました。
  • エディタで編集しているその場でフィードバックが欲しいと考えました。

解決:eslintプラグインを開発しました!

eslintなら先の要件を解決することができます。
こちらがnpmパッケージです: eslint-plugin-aspida - npm
開発途中ですが、テストが足りてないだけで実用に問題はないはずです。

使いかた

他のプラグインと同様ですが、一応記載しておきます

インストール

npmパッケージなので、まずはインストールをします。

$ npm install -D eslint-plugin-aspida # npmを使う場合
$ yarn add -D eslint-plugin-aspida # yarnを使う場合

設定

.eslintrc.jsにプラグインの読み込み設定をします。

    "plugins": [
+     "aspida",
    ]

recommended設定を読み込みます。全ての機能が有効になっています。

    "extends": [
+     "plugin:aspida/recommended",
    ]

これだけで幸せなaspida生活が待っています。ぜひ使ってください。


  1. デバッグのために配布されたライブラリのソースを見にいくことはおすすめしません。上級者向け2です。 

  2. 自分で上級者を名乗らない!(素振り) 

2
2
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
2
2