Fork me on GitHub

JSHint: A Formal Commitment to New Language Features

Edit on GitHub 編集履歴を見る

A Formal Commitment to New Language Features

JSHintのブログに投稿されたA Formal Commitment to New Language Featuresという記事の紹介です。

BabelなどによってES.nextの機能を試せるようになっていますが、
JSHintがそれらの新しすぎる構文をサポートするのが難しい理由について。

理由の一つとしてメンテナンスが難しすぎるという問題があること。

もう一つの大きな理由としては、JSHintは常にコミュニティ駆動型のツールであるため、
エコシステムを破壊するかもしれないまだ不安定なものをファーストクラスとしては採用しない事が挙げられています。

JSHintがJSLintをforkして作られた経緯については、以下に作者のブログで書かれています。

ES.nextを一概に取り入れないという意味ではなく、その機能のプロポーサルがStage 2以上のものは、全く早すぎるというわけではないためexperimentalフラグで取り入れていくとしています。

Note: Stage 2はECMAScriptのプロポーサルの段階を示すもので、
プロポーサルのドラフトができてブラウザがフラグ付きで実験的なサポートをしたりする段階です。

JSHint 3ではこの方針に則り

  • esnextというオプションは廃止
  • mozオプションについてはそのまま
  • ES6についてはesversion: 6オプションでサポート
  • ES7についてはちゃんと標準化が完了してからサポート
  • Stage 2以上のプロポーサルについてはexperimentalオプションでサポート

という形にしていくようです。


JSHintの競合としてESLintやそれを利用してBabelがサポートするStage nのプロポーサルもLintできるbabel-eslintがあります。

ESLintは柔軟なサポートをするためにプラグインシステムを導入していますが、
プラグインにはプラグインなりの難しさがあり今回の件が発端で議論されてます。

ESLintと役割が微妙に競合でもあるJSCS@mikesherovさんが言うように、
競合がいることは健全であるため、これからもLintツールにおいても互いの方針によって発展していくのは正しいと思います。

この記事へ修正リクエストをする
JSer.info Slackに参加する