Tslint: ロードマップ:TSLint-> ESLint

作成日 2019年02月23日  ·  52コメント  ·  ソース: palantir/tslint

このブログ投稿でお読みになったかもしれませんが、2019年にTSLintを廃止し、TypeScriptとJavaScriptの両方の標準リンターとしてESLintへの移行をサポートする予定です。 これはすぐに廃止されることはありません。 それどころか、リグレッションなしで新しいツールへのスムーズな移行を確実にするために行うべき多くの作業があります。 TSLintには、移行時に保持したい機能、テストスイート、および便利な機能があります。 2つのツールの間に重複がある期間がある可能性があり、TSLintのアーリーアダプターは、完全なコードチェックカバレッジを確保するために(パフォーマンスが大幅に低下しないように)、両方のリンターを実行することをお勧めします。

ESLint / typescript-eslintロードマップで処理されることを期待しているため、このリポジトリの一部の機能リクエストを閉じますが、現在は範囲外と感じています。 __新機能のリクエスト__がクローズ/拒否される可能性が最も高いルールのカテゴリの1つの例は、フォーマットルールです。 私たちはPalantirでPrettierを使用しており、コードのフォーマット作業に適したツールであると考えているため、これらのルールをかなり前から分割することを提案しました。

TSLintは、最新のコンパイラ/言語機能で最新の状態に保つ重要なバグ修正と更新を引き続きリリースします。


更新(2019年6月): @ JoshuaKGoldbergおよびtslint-contrib-microsoftと調整された、より具体的なロードマップのタイムライン:

  • __ 2019年8月1日__:新しい_core_ルールの受け入れを停止します。 バグ修正、マイナー機能、およびルール拡張を引き続き受け入れます。 カスタムルールは常にオプションであり、このリポジトリの外部で維持できます。
  • __ 2019年11月1日__:機能またはルールの拡張機能の受け入れを停止します(typescript-eslintへの移行を容易にするものを除く)。 引き続きバグ修正を受け入れます。
  • __ 2020年1月1日__:セキュリティ修正とTypeScriptの変更を壊すことによって導入されたクラッシュの修正以外は受け入れないようにします。
  • __ 2020年12月1日__:PRの受け入れを停止します🎉

更新(2019年8月):TSLint構成ファイルをESLint構成ファイルに移行するCLIコマンドについては、 tslint-to-eslint-configを参照してください。


更新(2020年3月):#4914での議論に続いて、1月1日の締め切りに_ "およびTypeScriptの変更を破ることによって導入されたクラッシュの修正" _を追加しました。

Documentation

最も参考になるコメント

tslint.jsonをeslint.jsonに移行し、同等のルールとオプションをマッピングするCLIコマンドがあれば素晴らしいと思います。 理想的には、tslint.jsonから移行できるルールを削除し、同等のものがまだない(または使用されているオプションをサポートしていない)ルールを保持して、tslint.jsonが空になるまでルールを時間の経過とともに繰り返し実行できるようにします。ある時点で、ESLintに完全に依存することができます。

全てのコメント52件

tslint.jsonをeslint.jsonに移行し、同等のルールとオプションをマッピングするCLIコマンドがあれば素晴らしいと思います。 理想的には、tslint.jsonから移行できるルールを削除し、同等のものがまだない(または使用されているオプションをサポートしていない)ルールを保持して、tslint.jsonが空になるまでルールを時間の経過とともに繰り返し実行できるようにします。ある時点で、ESLintに完全に依存することができます。

朗報です。
ESLintの連中は、TSをサポートするためにtypescript-eslintプロジェクトをすでに開始しています。
彼らはまた助けを求めています。 これがステートメントです。

移行後、tslintルールを作成するとどうなりますか?

eslintをJSからTSに移行する計画はありますか? 言いたくないのですが、eslintがtsに移行されていなければ、ルールを書くのはそれほど楽しいことではありません。

私の悪いことに、これは私たちが使用するeslintではなく、typescript-eslintを使用するので、より理にかなっています。 私が何か助けになることができるかどうか私に知らせてください。

この計画を参照して、リポジトリのreadme.mdから非推奨にすることは可能でしょうか? この計画について知っているのは特定の人々だけであり、一般的な知識ではないようです。 ありがとう!

@ joeyj-msftは確かに、adidahiyaによってa395501739bf7f0f166e5b0ccb355c0e9500445aに追加されました。

typescript-eslintで利用可能なTSLintルール(https://palantir.github.io/tslint/rules/)の「要約」があると便利です。 それがpalantirの「ESLint」フラグなのか、 https://github.com/typescript-eslint/typescript-eslintの新しいリストなのかわからない。 ただし、プロジェクトを移動する準備ができているかどうかを判断するのに役立ちます。

@JoshuaKGoldberg私はtslintからtypescript-eslintに移行しています。 TSLintを使用して、プロジェクトのカスタムルールを作成していました。 TSLintで行ったのと同じように、カスタムルールの作成を続行するにはどうすればよいですか?

私のプロジェクトはJavascriptとTypescriptファイルを作成するので、それらのルールを1つだけ作成する必要がありますか?

@moulikcipherX質問してくれてありがとう、素晴らしい質問!

typescript-eslint / packages / eslint-plugin-tslintを使用して、ESLint内でTSLintルールを使用できます。 TSLint構成をラップし、TSLintを使用してコードをリントします。

ESLintでルールを作成するには、 typescript-eslint / packages / eslint-pluginを参照してください。 そのREADME.mdには、サポートされているすべてのルールのリストがあります_(リストはかなり大きくなっています!)_。 ROADMAP.mdには、既存のTSLintルールから新しい同等のルールへのマッピングがあります。

ありがとう@JoshuaKGoldberg。

したがって、TSLintの場合と同じように、TypeScriptのカスタムルールを作成するために同じメソッドをさらに使用できます。

注:このスレッドの元の投稿を、より具体的なロードマップのタイムラインで更新しました。 このページの上部までスクロールして表示します。

えーと、ブログ投稿もhttps://github.com/palantir/tslint/tree/gh-pages/_postsにあり、 https ://github.com/palantir/tslint/blob/master/からリンクされているべきではありません。

@SamB gh-pages Webサイトのブログはかなり古くなっており、更新していません。 また、ブログ投稿はREADMEの上部にリンクされています。

@adidahiya @JoshuaKGoldberg
typescript-eslintプロジェクトに貢献したいのですが、どこから始めればよいですか?

カスタムtslintルールからカスタムeslintルールの同等の変換は、将来typescript-supported-eslintでサポートされますか?

私が言おうとしているのは、custom-tslint-ruleのJSファイルを対応するeslint互換のリンティングルールに変換するための特定のCLIコマンドがあることです。 tslintのルールをeslintに再実装することは、非常に困難な作業になるため、非常に役立ちます...

@ a20185 、はい、それは今存在します! https://github.com/typescript-eslint/tslint-to-eslint-config

このような素晴らしいツールを作成していただきありがとうございます。今後の冒険で皆様のご活躍をお祈りしております。 冒険といえば、これは確かにひとつでしたね。

とにかく、あなたにとって最高です、
意思

2019年の終わり(このレポジトリが非推奨になったと思われる年)が近づいていることを考えると、NPMに非推奨のフラグを追加して、新しいインストールがESLintに向けられるようにする良い機会かもしれません。

readmeの通知をもう少しわかりやすくし(トップレベル)、ユーザーをtypescript-eslintにリンクすることも役立ちます。

ほぼすべての一般的なユースケースがESLintでカバーされているので、これを実行することを計画していますか?

また、tslintが非推奨になると、eslintのプレッシャーが高まり、コミュニティがそれに集中するようになることを願っています。

tslint-to-eslint-configtslint.json.eslinerc.jsに変換するのに役立ちますが、できません
インラインtslint:disable:<rule>を処理できません。また、一部のルールが適切に構成されていないか、eslintでまだサポートされていません。

tslintからeslintに移行する場合、まだいくつかのエッジがありますが、typescriptファイルにeslintを使用する利点は何ですか? typescriptコミュニティとjavascriptコミュニティの間の一貫性を高めるには?
プロジェクトがjavascriptファイルをまったく使用せずにtypescriptのみを使用する場合、移行を行った後でもメリットはありますか?

tslint-to-eslint-configtslint.json.eslinerc.jsに変換するのに役立ちますが、できません
インラインの世話をすることはできませんtslint:disable:<rule>

確かに: https ://github.com/typescript-eslint/tslint-to-eslint-config/issues/136
必要に応じて、追加してください。 https://github.com/typescript-eslint/tslint-to-eslint-config/pull/246に、ヘルプを使用できる進行中の作業PRがあります。

tslintからeslintに移行する場合、まだいくつかのエッジがありますが、typescriptファイルにeslintを使用する利点は何ですか?

このスレッドの上部に記載されているブログ投稿にリストされている理由を確認できます。

@beenotung

TSLintは、ESLintと比較して常に制限されており、ESLintにはなかったルールがたくさんあります。 プラグインや、ESLintが常に持っていたはるかに大きなコミュニティ/サポートは言うまでもありません。 さらに、私たちの多くは、どこでも使用する適切に構成されたeslintrcを持っているため、TSLintプロジェクトは、(廃止されていないツールを使用して)修正が必要な不整合になります。

TSLintにESLintに欠けているものがある場合は、廃止されたツールを引き続き使用するよりも、実装できるようにESLintを上げる方がよいでしょう。

eslintのコンテキストを増やしてくれてありがとう、eslintを使用する利点がわかります。

実際にtslintからeslintに移行しようとしましたが、eslintに型の概念がないため、一部のエッジを簡単に修正できないようです(したがって、ジェネリック型のインデントが壊れています)。

eslintでのツールのサポートについて(特に構成ファイルのIDEヒント)。 いつか貢献できればいいのですが、今は経験も自由もありません。 (少なくとも、tslintはまだ正常に機能しているため、リストの一番上にはありません)

タイプスクリプトファイルにはtslintを使用し、javascriptファイルにはeslintを使用するのがそれほど苦痛ではないようです。これにより、両方の世界で「一貫性」を享受できます。

npmはTSLintが非推奨であり、代わりにESLintを使用すると述べているので、移行が完了したと思います。
この問題は解決されませんか?

@cdalexndrこの問題を公開しておくと、非推奨の理由を学び、最新の更新を読むことができます。

上記のブログ投稿は、 typescript-eslintに関する技術的な詳細に焦点を当てていません。
TSLintユーザーは、 typescript-eslintの仕組みについて詳しく読むことができます。

一般に、 typescript-eslint / READMEファイル全体には、透過的な移行に必要なものがすべて含まれています。

パッケージ自体がnpmで非推奨としてマークされていない理由はありますか? 例えばリクエストのように?

@niklasRバージョン6.0.0は、NPMで非推奨としてマークされ、その後、すべての地獄が崩壊しました。

#4919と#4914をチェックしてください。

私たちはすべての地獄を解き放ちたいのですが😛...人々はTSLintの使用をやめるべきです。

新しいバージョンを非推奨として明示的にマークしたことはないようです。 https://www.npmjs.com/package/tslintでバージョン履歴を参照してください:
Screenshot showing 6.0.0 as deprecated on npm but later versions not

私には権限がありません- @ adidahiya

奇妙なことに、ここのドキュメントは、このコマンドが範囲内にあるすべての潜在的な将来のバージョンを非推奨にすることを示唆していると思いました:

npm deprecate tslint@^6.0.0 "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information."

...しかし、そうではないと思います。 私は先に進んで、新しいものを非推奨にしました。

@adidahiyaありがとうございます。NPMドキュメントで問題を公開しました: https ://github.com/npm/cli/issues/1165

古いバージョンも非推奨にする必要がありますか? 同様に、リクエストどのように行われますか?

私が尋ねている理由は、パッケージをESLintに移行することを検討しているが、TSLint ^ 5をかなり多く使用しているためです。既存のプロセスを使用して、(300以上の)リポジトリをスキャンするだけでよいでしょう。移行が必要なものにフラグを立てる非推奨通知。

非推奨は常に、そしてこれまでにのみ既存のバージョンに適用されてきました。 新しいバージョンを非推奨にする場合は、公開後に常に手動で非推奨にする必要があります。

ユーザーがTSLintの非推奨について非常に明確な何かをgithubページhttps://palantir.github.io/tslint/に表示するのは良いことではないでしょうか?

ユーザーがTSLintの非推奨について非常に明確な何かをgithubページhttps://palantir.github.io/tslint/に表示するのは良いことではないでしょうか?

それがまさに私が待ち望んでいたことです! 誰かがtslintからeslintへの移行に関する明確なステップバイステップの説明を提示してください

TSLintドキュメントのWebサイトはしばらく更新されていませんが、このリポジトリのREADMEは最新であり、 typescript-eslint READMEには、移行のステップバイステップガイドを含む非常に多くの有用な情報があります。

エラーメッセージの修正
[https://stackoverflow.com/questions/61605380/angular-9-issue-unable-to-run-the-initial-application]
npm install chokidar
npm cache clean --force
npm install -g @ angle / cli @ latest

install error
こんにちはAngularチーム、私はAngularを初めて使用します。新しいプロジェクトを作成しようとしているときに発生するエラーについて、私を助けてください。

ありがとう。

こんにちはAngularチーム、私はAngularを初めて使用します。新しいプロジェクトを作成しようとしているときに発生するエラーについて、私を助けてください。

ありがとう。

あなたは間違った場所にいます
これはpalantirであり、 angularではありません
https://github.com/angular/angular/issuesで問題を作成してください
またはさらに良いことに、この問題に対処する問題がすでにあるかどうかを調べます
よろしくお願いします、じゃあね

彼らがAngularの助けを求めて「ここ」にいることに私は呆然としているが、彼らのロゴが英国の電源ソケットのように見えることに非常に感銘を受けた。

@JoshuaKGoldbergありがとうございます!

このリポジトリをアーカイブ/ロックする日も来るはずです。

コードを再度変更する必要はありません。 誰かが今バグを見つけた場合、解決策は、この長く時代遅れのプロジェクトを掘り起こすのではなく、ESLintを使用することです。

ほとんどの人が今それをやめようとしているのを見るのは素晴らしいことですが、これを放棄することについてより明確であるほど良いです。

2020年9月以降、ts-lintを代わりにeslintとして使用する必要はないと思います。

プロジェクトでまだts-lintを使用している場合は、使用を検討してください
https://github.com/typescript-eslint/tslint-to-eslint-configを確認しています

しかし、typescript-eslintは実際には何が悪いのかを教えてくれませんhttps://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md#why -dont-i-see -typescript-errors-in-my-eslint-output

😢

しかし、typescript-eslintは実際には何が悪いのかを教えてくれませんhttps://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md#why -dont-i-see -typescript-errors-in-my-eslint-output

😢

これはTSLintにもほぼ当てはまると思います。また、TSLintを使用する場合でも、リンティングスクリプトでtsc --noEmitと呼ぶのはなぜですか。

バージョン8で新しいAngularアプリを生成しましたが、tslintのデフォルトが付属しています。 ハスキーの実装にtsconfigを使い始めました。 私の質問は、今後数年間、プロジェクトでAngular 8を使用することを考えると、推奨されているようにtypescript-eslintに移行する必要がありますか?

@mayankkalbhorこれまで見てきたように、AngularのデフォルトではTSLintを使用します。 Angular CLIのすべてのデフォルト構成がESLint用に構成されるまでは、Angular 11以降になると思います。ロードマップを参照してください: https ://angular.io/guide/roadmap#migration-to-eslint。

すでに何かを設定している場合は、TSLintの代わりにESLintを使用することを実際に強制するものがない間に、それを自分で移行する必要があります。 それは完全にあなた自身の選択です。 ESLintの機能を好む場合、または実際にルールを構成するために時間を費やす予定の場合は、おそらく移行があなたの道です。 ただし、TSLintルールの構成に時間を費やしておらず、それらに満足している場合は、それらを無期限に使用し続けることができます。 バグ修正が無期限に行われ、機能がまったく更新されないことを期待しないでください。

Angular開発者のデフォルトのパスは、Angularが将来のAngularアップグレード(おそらくAngular 10から11または11から12)に移行スクリプトを含めるのを待つことだと思います。

ただし、誰でも自由にESLintに移行できます。 自分自身を移行するための唯一の本当のブロッカーは、時間に余裕があり、同等のESLint構成に現在存在しない機能を失ってもかまわない場合です。 以前にCodelyzerを介していくつかのリンティング構成があり、現在ここで差し迫った交換があります: angular-eslint

ソフトウェアのEOLに到達しているので、typescript-eslintが逆に行うのと同じように、各ルールドキュメントにtypescript-eslintドキュメントの置換ルールへのリンクがあるとしたら素晴らしいでしょう。

これは、2021年1月1日以降、プロジェクトでtslintを使用できなくなることを意味しますか? 現在、私のビルドはtslintを使用しています。 npmWebサイトにtslintをインストールするコマンドが表示されません。 そして、tslintは現在非推奨であると書かれています。 誰かが私の質問に答えてもらえますか?

ありがとう。

あなたはそれを使うことができます、しかしあなたはどんな方法でもどんな種類のサポートも受けません。
また、これ以上の更新はありません。
そうです、あなたはエスリントに進むべきです。

最後のチェックアウトとして、tslintはより多くの種類の自動修正をサポートしているため、eslintを実行する前に「tslint--fix」を実行することをお勧めします。

その間に状況が変わった可能性があります。

そのコードを並べ替えます

このページは役に立ちましたか?
0 / 5 - 0 評価