終わらないリントの夏
というものを作って遊んでいる。
様子
絶対に
new Date()
を許さない姿勢
いますぐインストール
$ yarn add -D eslint eslint-plugin-summer
.eslintrc
にこういう感じのを書く
{ "plugins": ["summer"], "rules": { "summer/no-eqeqeq-null-undefined": "error", "summer/no-let": "error", "summer/no-plain-new-date": "error" } }
これでルールが使えるようになる。
recommended
も用意してあるので、雑にこう書くと僕が用意したconfigがシュッと手元に入る。
{ "extends": ["plugin:summer/recommended"] }
よもやま話
リポジトリはここ
OSSとして公開している。
このリポジトリはlerna+yarn workspaceで構成していて、非常にミニマルなので参考にしやすい規模感かつ技術的なアピールポイントかもしれない。symlinkだけyarn workspaceにまかせて、buildとかpublishはlernaにまかせている。
がいまのところあって、pluginが上述したプラグインで、rulesのほうがルールだけを固めたライブラリ。
多くのライブラリはpluginのリポジトリでrulesを抱えていて、ルールを単体ライブラリとして公開していないケースがほとんどなのだけど、これだとruleの方をimportして使いたいというdeveloperのニーズを満たせないケースがある。なのでrulesとpluginをこのeslint-summer
では分離してmonorepoで構えて両方をnpmに公開している。
名前がなんでsummerかというとマジで意味はなくて、ネームスペース考えるのが面倒くさくて僕はhitonatsuというハンドルネームでやっているから夏だし、ちょうど季節も夏だしということでsummerになった。
たいていのルールは巷にすでにあるからエッジケースルール置き場になりそうな気はしている。とはいえそういうのを置いておく場所があることが大事で、ないと放置しがちなので積極的に機械で縛っていきたい所存。