You've been going along writing your Angular application, and you've now reached a point where you have enough code in…, We could say automation is the whole raison d’être for software development. While both will explain to you how to use their system if you read them, JSHint’s documentation is simpler and more straightforward. We and selected partners, use cookies or similar technologies to provide our services, to personalize content and ads, to provide social media features and to analyze our traffic, both on this website and through other media, as further detailed in our. Part of the reason is that I write nearly all my UIs in React. ESLint vs JSLint vs JSHint vs JSCS Tags: ESLint JavaScript I recently wrote about using ESLint to auto-detect bugs. This file allows JSLint to be run from a web browser. As developers, we seek to employ automation in…, Being a beginner in software testing might feel overwhelming. JSHint and ESLint is both configurable and works great. npm install  command. JSLint is strict and not configurable, whereas JSHint is lacking the extension mechanism. What does it even do? JSLint vs TSLint: What are the differences? この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。, 私は現在、JavaScriptをJSLintに対して検証し、進歩を遂げています。これは、特にJqueryライブラリーでの作業において、より良いJavaScriptを書くのに役立ちます。, 私は今渡って来たJSHint、のフォークJSLint。 For some teams, this might be a reasonable compromise. Just make sure that the file can be found by JSHint. この回答は編集されています。以下の元の回答はコンテキストに残しておきます(そうしないと、コメントは意味がありません)。, この質問が最初に行われたとき、JSLintはJavaScriptの主要なリンティングツールでした。JSHintはJSLintの新しいフォークでしたが、まだ元のバージョンからそれほど分岐していませんでした。, それ以来、JSLintはかなり静的なままですが、JSHintは大幅に変更されました。これにより、JSLintのより敵対的なルールの多くが破棄され、新しいルールが大量に追加され、一般に柔軟性が高まりました。また、別のツールESLintが利用可能になりました。これは、さらに柔軟で、より多くのルールオプションがあります。, 私の最初の答えでは、JSLintのルールに固執するように強制するべきではないと述べました。警告がスローされた理由を理解していれば、警告を解決するためにコードを変更するかどうかを自分で判断できます。, 2011年のJSLintの非常に厳密なルールセットでは、これは合理的なアドバイスでした。JSLintテストに合格できるJavaScriptコードセットはほとんどありません。ただし、今日のJSHintおよびESLintツールで利用できるより実用的なルールにより、警告なしでコードを通過させることは、より現実的な提案です。, それでも、リンターが意図的に行ったことについて不平を言う場合があります。たとえば、常に使用する必要があることはわかって===いますが、今回のみ使用する理由があります==。しかし、それでも、ESLintを使用すると、eslint-disable問題の行の周りを指定するオプションがあるため、警告なしでlintテストに合格でき、残りのコードはルールに従います。(そのようなことをあまり頻繁に行わないでください!), 必ずJSLintを使用してください。しかし、結果やそれが警告するすべてのものを修正することにこだわらないでください。これはコードの改善に役立ち、潜在的なバグを見つけるのに役立ちますが、JSLintが不満を言うすべてが実際の問題であるとは限らないので、警告なしでプロセスを完了する必要がないように感じてください。, かなりの長さまたは複雑さを持つほとんどすべてのJavascriptコードは、それがどれほど適切に記述されていても、JSLintで警告を生成します。信じられない場合は、JQueryなどの一般的なライブラリを実行してみてください。, JSLintの警告の中には、他の警告よりも価値のあるものがあります。注意する必要があるのはどれか、重要でないものはどれかを学んでください。すべての警告を検討する必要がありますが、特定の警告をクリアするようにコードを修正する必要はありません。コードを見て、満足していると判断しても問題ありません。JSlintが嫌いなことは、実際には正しいことです。, 自分やチームに非常に高い水準を求めているなら、JSLint。しかし、それは必ずしもTHE標準ではなく、単なるA標準です。そのうちのいくつかは、Doug Crockfordという名前のJavaScriptの神から教義的に私たちにもたらされます。もう少し柔軟になりたい場合、またはチームにJSLintの意見を受け入れない古いプロがいる場合、またはJSと他のCファミリ言語を定期的に行き来している場合は、JSHintを試してください。, フォークの背後にある推論は、JSHintが存在する理由をかなりよく説明しています。, http://badassjs.com/post/3364925033/jshint-an-community-driven-fork-of-jslint http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to -jshint /, だから私はそれがクロックフォード主導ではなく「コミュニティ主導」であるという考えだと思います。実際には、JSHintは、JSLintがスティッカーであるいくつかの文体的​​でマイナーな構文上の「意見」に対して、一般に少し寛容(または少なくとも構成可能か不可知論的)です。, 例として、以下のAとBの両方に問題がないと思われる場合、またはBで利用できないAの1つ以上の側面を持つコードを記述したい場合は、JSHintが適しています。Bが唯一の正しいオプションだと思うなら... JSLint。他にも違いがあると思いますが、これはいくつかの点を強調しています。, 個人的に私はJSLintコードを見るのがとても良いと思います。私が同意しない唯一のハード機能は、関数内の複数のvar宣言とforループvar i = 0宣言の憎しみ、および関数宣言の空白の強制のいくつかです。 。, JSLintが強制する空白のいくつかは、必ずしも悪いわけではありませんが、ファミリーの他の言語(C、Java、Pythonなど)のかなり標準的な空白の規則とは同期していません。 Javascriptの規則にも従います。私はこれらのさまざまな言語で1日中執筆しており、コード内でLintスタイルの空白文字を好まないチームメンバーと作業しているため、JSHintはバランスが取れていると思います。それは正当なバグや本当に悪い形であるものを捕まえますが、私が気にしない文体的な意見や構文上の問題のためにJSLintが(時々、私が無効にできない方法で)するように私に吠えません。, 多くの優れたライブラリーはLint可能ではありません。これは、JSLintの一部が単に1つのバージョンの「優れたコード」(実際には優れたコード)をプッシュするだけであるという考えに真実があることを私に示しています。しかし、繰り返しになりますが、同じライブラリ(または他の優れたライブラリ)はおそらくヒントになりません。, JavaScriptリンティングフロントには、もう1つの成熟して活発に開発された「プレーヤー」がありESLintます。, ESLintは、ECMAScript / JavaScriptコードにあるパターンを識別してレポートするためのツールです。多くの点で、JSLintおよびJSHintに似ていますが、いくつか例外があります。, ここで本当に重要なのは、カスタムプラグイン/ルールを介して拡張可能であることです。さまざまな目的で書かれたプラグインがすでに複数あります。中で他の人、があります。, そしてもちろん、あなたが選んだビルドツールを使って実行することができますESLint:, JSHintでもJSLintとほぼ同じルールを構成できるためです。したがって、達成できるルールに大きな違いはないと主張します。, 3つ目の提案は、Google Closure Compiler(およびClosure Linter)です。こちらからオンラインでお試しいただけます。, Closure Compilerは、JavaScriptのダウンロードと実行を高速化するためのツールです。これはJavaScriptの真のコンパイラです。ソース言語からマシンコードにコンパイルする代わりに、JavaScriptからより良いJavaScriptにコンパイルします。JavaScriptを解析して分析し、不要なコードを削除して、残っているものを書き換えて最小化します。また、構文、変数参照、および型をチェックし、一般的なJavaScriptの落とし穴について警告します。, 序:まあ、それは急速にエスカレートしました。しかし、それを完全に引き継ぐことにしました。この回答があなたや他の読者の役に立つと思います。, JSLintとJSHintは優れたツールですが、長年にわたって、友人の@ugly_syntaxが呼ぶものに感謝するようになりました。, これは「禅僧」によく似た一般原則であり、自分がしなければならない選択を制限し、生産性と創造性を高めることができます。, フローが大幅に改善されました。それを使用すると、JSにタイプを追加でき、多くのバグを防ぐのに役立ちます。ただし、たとえば、型指定されていないJSとインターフェースする場合など、邪魔にならないようにすることもできます。試してみる!, 開発中の出力をすっきりさせ、のnpm install --global snazzy代わりに実行しますnpm test。, 私の友人がエルムに言及したデザインスペースに言及するとき、私はその言語を試してみることをお勧めします。, どうして?JSは実際には、たまたま型付けされていない特殊な言語クラスであるLISPに触発されています。ElmやPurescriptなどの言語は、型付き関数型プログラミング言語です。, 言語を制限したり、独自のプログラムの規則に違反したりした場合にコンパイラーがチェックおよびガイドできるように、タイプを制限します。プログラムのサイズ(LOC)に関係なく。, 最近、後輩に反応型インターフェースを2回実装してもらいました。1回はElmで、1回はReactで、私が何を話しているのかを理解するために見てください。, (ps。Reactコードは慣用的ではなく、改善できる可能性があることに注意してください), 実際には、JS は型付けされていません。型付きプログラミングをあなたに提案するのは誰ですか?, JSを使用すると、別のドメインにいることになります。型から解放されるため、適切な型を与えることが困難または不可能であるものを簡単に表現できます(これは確かに利点になります)。, しかし、型がなければ、プログラムをチェックする必要はほとんどありません。そのため、テストと(より短い範囲で)コードスタイルを導入せざるを得ません。, LISP(ClojureScriptなど)を参考にしてコードをテストすることをお勧めします。アイデアを得るためにサブスタックの方法を読んでください。, まあ、手動のlint設定を行う代わりに、JSファイル自体の先頭にすべてのlint設定を含めることができます。, 積極的に開発された別の方法もあります-JSCS — JavaScript Code Style:, JSCSは、スタイルガイドをプログラムで適用するためのコードスタイルリンターです。jQuery、Airbnb、Googleなどの人気のあるスタイルガイドのプリセットを含む150以上の検証ルールを使用して、プロジェクトのJSCSを詳細に設定できます。, これには、構成ファイルでを指定してカスタマイズするだけで選択できる複数のプリセットが付属しています-ルールを上書き、有効化、または無効化します。preset.jscsrc, JS開発者ではありません。しかし、JSHintはコードレビュープロセス中に非常に役立つことがわかりました。私はそれをお勧めします。, jsHintの最も優れた点は、jQueryを受け入れるためのフラグがあり、jslintのように煩わしくなく、厳密でもないことです。例:大丈夫なところに, ルールを無視しないでください。これは、リンターで実行できる最悪のことです。設定するか、それができない場合は変更してください。JSHintとJSCSの組み合わせは素晴らしい, JSHintは、「割り当てまたは関数呼び出しを予期し、代わりに式を見ました」と述べています。操作にのみ使用される3項に。Mozillaのドキュメント:「フリースペースで3値評価を使用して、さまざまな操作を実行することもできます」と記載されています。, ESLintは、airbnbなどの一般的な構成とともに、業界全体の方向性になっているようです。, ...私は認めざるを得ません。私は、JS(および偶然にもCSS)のコーディングスタイルに関して最近増えたアドバイスの専門外の質に失望しています。それはまるで、特定の言語への夢中が専門家ではない専門家(つまり対象者)のニーズをオーバーライドしたかのようです。これは、彼らが良いアドバイスを必要とすることを考えると非常に残念であり、ベストプラクティスとして宣伝されているものを盲目的に追跡し、永続化します。多くの場合、他の言語のより確立されたユーザーコミュニティによって採用されている他の標準と互換性がありません。:(, @MarkEvans言語実装の詳細に集中しすぎていると思います。プログラミング標準は、コンパイラーではなく、人間向けでなければなりません。よくある落とし穴を見つけるために静的コード分析ツールに依存することは、そもそもそれらを避ける良い習慣を採用する代わりにはなりません。単純なループの反復子変数を、それを必要とするループから離れた場所で宣言する必要がある理由を理解することはできません。他の言語の多くのコーディング標準では、読みやすくするために、変数はできる限り使用される場所に近い場所で宣言するとしています。JSでこれを行わない正当な理由を見たことがありません。, ループの外でイテレーター変数を使用することは、リンターがチェックするべきものです。, 入力時にエディターで実行されるリンターを使用することの価値は控えめに言っても過言ではありません。ESLintは、この方法で広く使用されています。JSLintやJSHintエディターのサポートについて聞いたことがありません(1つの事例データポイント)。, このツールで生成された警告が1つも表示されません。JSLintおよびJSHintは、同じ入力に対して非常に多くの警告を生成するため、どちらも「エラーが多すぎます」。, 最近のプロジェクトでは閉鎖を使用しましたが、再び閉鎖することはありませんでした。リンターは特定のチェック(多くは気にしないもの)をオフにするように構成することはできず、コンパイラーは、実際に閉鎖に適したライブラリ(実際には存在しない)でのみ作業している場合にのみ効果を発揮しますグーグル以外のすべて)。, これは、Google Closure Comepiler自体を指すものではありませんが、Googleのツールは常に細かく見ておく必要があります。これらは特定のGoogleの目標を解決するために作成されており、お客様の目標と一致しない場合があります。, @RobertLevyあなたが経験したことについてコメントしてくれてありがとう...私はJavaScriptのGoogleスタイルガイドを読んでいて、lintプログラムなので、クロージャーコンパイラを推奨していました。しかし今、jslintやjshintのような他のものがあることがわかります, なぜ反対票か。私は確かに気にしませんが、OPが「それは私がより良いJavaScriptを書くのに役立つ」と書いたので、これは有用な答えだと思いますか?どう思いますか?, 反対票とは無関係ですが、Main.elmとindex.jsのリンクはどちらも404です, "node_modules/.bin/standard && echo put further tests here", /*global require,dojo,dojoConfig,alert */, /*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */, scottlogic.com/blog/2011/03/28/jslint-vs-jshint.html, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…@AuthorProxy, http://badassjs.com/post/3364925033/jshint-an-community-driven-fork-of-jslint, http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to -jshint /, programmers.stackexchange.com/questions/56585/…, ESLintは完全にプラグイン可能で、すべてのルールはプラグインであり、実行時にさらに追加できます。. Code that was perfectly fine yesterday is now throwing an error today. As the co-author of a JSLint plugin, I've had to consider whether to support JSHint and have decided to add support (it is a work in progress). Then, they take those rules a step further: they codify them into an automatic code-checking system. While this is useful, it doesn’t compare to the clarity provided by ESLint. When it comes to JSHint, you need to define a The two foremost linting options for JavaScript codebases are ESLint and JSHint. They also simplify adding a new developer to the team. By contrast, JSHint’s error messages aren’t nearly so versatile. Setting up this file can be pretty time-consuming. This category only includes cookies that ensures basic functionalities and security features of the website. This website uses cookies to improve your experience while you navigate through the website. I have been developing application using Gulp and speed is crucial to come up with a prototype. We've finally decided to go with JSHint because of the following reasons: Seems to be more configurable that JSLint. (reason: here and here ) Please make sure that the path to jshint is available to SublimeLinter. JSHint will display errors, with a file name, line number and column number, as well as a short explanation of what’s wrong with the code. JSCS is a good choice if you only want to check coding style, but … These cookies will be stored in your browser only with your consent. It will lint JavaScript in files with the .js extension and optionally inside