Tslint: Peta Jalan: TSLint -> ESLint

Dibuat pada 23 Feb 2019  ·  52Komentar  ·  Sumber: palantir/tslint

Seperti yang mungkin telah Anda baca di posting blog ini , kami berencana untuk menghentikan penggunaan TSLint pada tahun 2019 dan mendukung migrasi ke ESLint sebagai linter standar untuk TypeScript & JavaScript. Ini tidak akan menjadi penghentian segera; sebaliknya, ada banyak pekerjaan yang harus dilakukan untuk memastikan transisi yang mulus ke perkakas baru tanpa regresi apa pun. Ada fitur, rangkaian pengujian, dan kenyamanan di TSLint yang kami harap dapat dipertahankan dalam migrasi. Mungkin ada periode waktu ketika ada tumpang tindih antara dua alat dan pengadopsi awal TSLint disarankan untuk menjalankan _both_ linter untuk memastikan cakupan pemeriksaan kode penuh (sampai tingkat yang wajar sehingga kinerja tidak menurun drastis).

Saya akan menutup beberapa permintaan fitur dalam repo ini yang sekarang terasa di luar jangkauan karena kami mengharapkannya untuk ditangani di peta jalan ESLint / TypeScript-eslint . Salah satu contoh kategori aturan yang __permintaan fitur baru__ kemungkinan besar akan ditutup / ditolak adalah aturan pemformatan . Saya telah menyarankan untuk memisahkan aturan-aturan ini untuk beberapa waktu karena kami menggunakan Prettier di Palantir dan menganggapnya sebagai alat yang lebih baik untuk pekerjaan memformat kode.

TSLint akan terus merilis dengan perbaikan bug penting dan pembaruan yang membuatnya tetap up-to-date dengan fitur compiler / bahasa terbaru.


Pembaruan (Juni 2019): garis waktu peta jalan yang lebih konkret, dikoordinasikan dengan @JoshuaKGoldberg dan tslint-contrib-microsoft:

  • __1 Agustus 2019__: Berhenti menerima aturan _core_ baru. Masih menerima perbaikan bug, fitur minor, dan penyempurnaan aturan. Aturan khusus selalu menjadi pilihan dan dapat dipertahankan di luar repo ini.
  • __1 November 2019__: Berhenti menerima fitur atau penyempurnaan aturan (dengan pengecualian yang memudahkan migrasi ke TypeScript-eslint). Masih menerima perbaikan bug.
  • __1 Januari 2020__: Berhenti menerima apa pun kecuali perbaikan keamanan dan perbaikan untuk mogok yang diperkenalkan dengan melanggar perubahan TypeScript.
  • __1 Desember 2020__: Berhenti menerima PR apa pun

Pembaruan (Agustus 2019): lihat tslint-to-eslint-config untuk perintah CLI yang memigrasikan file konfigurasi TSLint ke file konfigurasi ESLint.


Pembaruan (Maret 2020): Menambahkan _"dan perbaikan untuk kerusakan yang diperkenalkan dengan melanggar perubahan TypeScript"_ ke tenggat waktu 1 Januari, mengikuti diskusi di #4914.

Documentation

Komentar yang paling membantu

Saya akan senang memiliki perintah CLI yang memigrasikan tslint.json ke eslint.json, memetakan aturan dan opsi yang setara. Idealnya itu akan menghapus aturan yang dapat dimigrasikan dari tslint.json dan menyimpan aturan yang belum memiliki padanan (atau tidak mendukung opsi yang digunakan), sehingga aturan dapat dijalankan secara idempoten berulang kali dari waktu ke waktu hingga tslint.json menjadi kosong di beberapa titik dan kami dapat sepenuhnya mengandalkan ESLint.

Semua 52 komentar

Saya akan senang memiliki perintah CLI yang memigrasikan tslint.json ke eslint.json, memetakan aturan dan opsi yang setara. Idealnya itu akan menghapus aturan yang dapat dimigrasikan dari tslint.json dan menyimpan aturan yang belum memiliki padanan (atau tidak mendukung opsi yang digunakan), sehingga aturan dapat dijalankan secara idempoten berulang kali dari waktu ke waktu hingga tslint.json menjadi kosong di beberapa titik dan kami dapat sepenuhnya mengandalkan ESLint.

Kabar baik.
Orang-orang ESLint sudah memulai proyek TypeScript-eslint untuk mendukung TS.
Mereka juga mencari bantuan. Berikut adalah pernyataannya. .

apa artinya menulis aturan tslint setelah migrasi?

Apakah ada rencana untuk memigrasikan eslint dari JS ke TS? Saya benci mengatakannya tetapi jika eslint tidak dimigrasikan ke ts, tidak akan menyenangkan untuk menulis aturan.

Buruk saya, itu bukan eslint yang akan kami gunakan, kami akan menggunakan TypeScript-eslint, lebih masuk akal. beri tahu saya jika saya dapat membantu.

apakah mungkin untuk mereferensikan rencana ini untuk dihentikan dari readme.md di repo? Tampaknya hanya orang-orang tertentu yang tahu tentang rencana ini dan bukan pengetahuan umum. Terima kasih!

@joeyj-msft memang, ditambahkan di a395501739bf7f0f166e5b0ccb355c0e9500445a oleh adidahiya.

Akan menyenangkan untuk memiliki beberapa "rekap" aturan TSLint (https://palantir.github.io/tslint/rules/) tersedia di typescript-eslint . Tidak tahu apakah itu harus berupa bendera "ESLint" di palantir atau daftar baru di https://github.com/typescript-eslint/typescript-eslint. Tapi itu akan membantu memutuskan apakah sebuah proyek siap untuk dipindahkan atau tidak.

@JoshuaKGoldberg Saya beralih dari tslint ke TypeScript-eslint. Saya menggunakan TSLint untuk membuat aturan khusus untuk proyek saya. Bagaimana saya bisa melanjutkan membuat aturan khusus seperti yang kami lakukan di TSLint?

Proyek saya membuat file Javascript serta TypeScript jadi saya harus membuat hanya satu aturan untuk mereka?

@moulikcipherX terima kasih telah bertanya, pertanyaan bagus!

Anda dapat menggunakan aturan TSLint Anda dalam ESLint menggunakan TypeScript-eslint/packages/eslint-plugin-tslint . Ini membungkus konfigurasi TSLint dan lints kode Anda menggunakan TSLint.

Untuk menulis aturan di ESLint, lihat TypeScript-eslint/packages/eslint-plugin . README.md itu memiliki daftar semua aturan yang didukungnya _(daftarnya menjadi cukup besar!)_. ROADMAP.md di sana memiliki pemetaan aturan TSLint yang ada ke persamaan baru.

Terima kasih @JoshuaKGoldberg.

Jadi saya selanjutnya dapat menggunakan metode yang sama untuk membuat aturan khusus untuk TypeScript sama seperti di TSLint.

Catatan: Saya baru saja memperbarui posting asli di utas ini dengan garis waktu peta jalan yang lebih konkret. Gulir ke bagian atas halaman ini untuk melihatnya.

Eh, bukankah seharusnya posting blog juga ada di https://github.com/palantir/tslint/tree/gh-pages/_posts , dan ditautkan dari https://github.com/palantir/tslint/blob/master/ README.md ?

@SamB blog di situs web gh-pages cukup usang, kami belum memperbaruinya. Dan posting blog ditautkan di bagian atas README.

@adidahiya @JoshuaKGoldberg
Saya ingin berkontribusi pada proyek TypeScript-eslint jadi dari mana saya harus memulai?

Akankah transformasi yang setara dari aturan tslint kustom ke aturan eslint kustom didukung di masa mendatang typescript-supported-eslint ?

Apa yang saya coba katakan adalah memiliki perintah CLI tertentu untuk mengonversi file JS custom-tslint-rule ke aturan linting yang kompatibel dengan eslint. Ini akan banyak membantu untuk menerapkan kembali aturan tslint untuk eslint akan menjadi pekerjaan yang sangat sulit...

Terima kasih telah menciptakan alat yang begitu brilian, dan saya berharap yang terbaik untuk petualangan Anda di masa depan. Berbicara tentang petualangan, ini pasti salah satunya, bukan?

Bagaimanapun, semua yang terbaik untukmu,
Akan

Mengingat kita akan segera memasuki akhir tahun 2019 (tahun di mana repo ini seharusnya tidak digunakan lagi), sekarang bisa menjadi saat yang tepat untuk menambahkan flag yang sudah tidak digunakan lagi di NPM sehingga pemasangan baru diarahkan ke ESLint.

Akan berguna juga, untuk membuat pemberitahuan readme sedikit lebih jelas (tingkat atas) dan menautkan pengguna ke TypeScript-eslint.

Apakah Anda berencana melakukan ini sekarang karena hampir setiap kasus penggunaan umum telah dicakup oleh ESLint?

Saya juga berpikir dan berharap bahwa ketika tslint tidak digunakan lagi, eslint mendapat lebih banyak tekanan dan komunitas lebih fokus padanya

tslint-to-eslint-config membantu mengonversi tslint.json menjadi .eslinerc.js tetapi tidak bisa
tidak dapat menangani inline tslint:disable:<rule> , juga, beberapa aturan tidak dikonfigurasi dengan baik atau belum didukung oleh eslint.

Masih ada beberapa sisi ketika bermigrasi dari tslint ke eslint, apa manfaat menggunakan eslint untuk file TypeScript? Untuk mendapatkan konsistensi yang lebih baik di antara komunitas TypeScript dan komunitas javascript?
Jika suatu proyek hanya menggunakan TypeScript, tanpa file javascript sama sekali, apakah masih ada keuntungan setelah melakukan migrasi?

tslint-to-eslint-config membantu mengonversi tslint.json menjadi .eslinerc.js tetapi tidak dapat
tidak bisa mengurus inline tslint:disable:<rule>

Memang: https://github.com/typescript-eslint/tslint-to-eslint-config/issues/136
Anda dipersilakan untuk ikut serta untuk menambahkannya jika Anda mau! Ada pekerjaan yang sedang berlangsung PR di https://github.com/typescript-eslint/tslint-to-eslint-config/pull/246 yang dapat menggunakan bantuan.

Masih ada beberapa sisi ketika bermigrasi dari tslint ke eslint, apa manfaat menggunakan eslint untuk file TypeScript?

Anda dapat melihat alasan yang tercantum dalam posting blog yang disebutkan di bagian atas utas ini.

@beenotung

TSLint selalu terbatas dibandingkan dengan ESLint, ada banyak aturan yang tidak pernah dimiliki ESLint. Belum lagi plugin dan komunitas/dukungan yang jauh lebih besar yang selalu dimiliki ESLint. Selain itu, banyak dari kita memiliki eslintrc yang dikonfigurasi dengan baik yang kita gunakan di mana-mana, membuat proyek TSLint menjadi inkonsistensi yang perlu diperbaiki (dengan menggunakan alat yang tidak usang).

Jika ada sesuatu yang hilang dari ESLint yang dimiliki TSLint, lebih baik untuk meningkatkannya agar dapat diimplementasikan daripada terus menggunakan alat yang sudah usang.

Terima kasih telah meningkatkan lebih banyak konteks ke eslint, saya melihat manfaat menggunakan eslint.

Saya sebenarnya mencoba untuk bermigrasi dari tslint ke eslint tetapi tampaknya beberapa tepi tidak dapat diperbaiki dengan mudah karena eslint tidak memiliki konsep tipe (karenanya lekukan untuk tipe generik rusak).

Mengenai dukungan perkakas pada eslint (terutama petunjuk IDE pada file konfigurasi). Saya berharap suatu hari saya dapat berkontribusi tetapi saya tidak berpengalaman atau bebas untuk mengerjakannya saat ini. (Setidaknya itu tidak ada di daftar teratas saya karena yah, tslint masih berfungsi dengan baik)

Tampaknya cara yang tidak terlalu menyakitkan adalah dengan menggunakan tslint untuk file TypeScript, dan eslint untuk file javascript, sehingga kedua dunia dapat menikmati 'konsistensi' mereka.

Karena npm menyatakan bahwa TSLint sudah usang dan menggunakan ESLint sebagai gantinya , saya menganggap migrasi selesai.
Bukankah masalah ini harus ditutup?

@cdalexndr masih berguna untuk membuka masalah ini bagi orang-orang untuk belajar tentang alasan penghentian dan untuk membaca pembaruan terbaru.

Karena posting blog di atas tidak fokus pada detail teknis tentang typescript-eslint .
Pengguna TSLint dapat membaca lebih lanjut tentang Bagaimana cara kerja typescript-eslint ?

Secara umum, seluruh file TypeScript-eslint/README memiliki semua yang diperlukan untuk transisi transparan.

Apakah ada alasan mengapa paket itu sendiri tidak ditandai sebagai usang pada npm? Seperti misalnya permintaan ?

@niklasR versi 6.0.0 ditandai sebagai usang di NPM dan kemudian semuanya pecah.

Lihat #4919 dan #4914 .

Kami _ingin_ semua untuk melepaskan diri ... orang-orang harus berhenti menggunakan TSLint.

Sepertinya kami tidak pernah secara eksplisit menandai versi baru sebagai usang; lihat riwayat versi di https://www.npmjs.com/package/tslint :
Screenshot showing 6.0.0 as deprecated on npm but later versions not

Saya tidak punya izin - @adidahiya ?

Oh, aneh, saya pikir dokumen di sini menyarankan bahwa perintah ini akan menghentikan semua potensi versi masa depan yang termasuk dalam kisaran:

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."

... tapi saya kira bukan itu masalahnya. Saya telah maju dan tidak menggunakan yang lebih baru.

@adidahiya Terima kasih, saya telah membuka masalah pada dokumen NPM di sini: https://github.com/npm/cli/issues/1165

Haruskah versi yang lebih lama juga ditinggalkan? Demikian pula bagaimana permintaannya?

Alasan saya bertanya adalah karena kami ingin memigrasikan paket kami ke ESLint, tetapi menggunakan TSLint ^5 cukup banyak, dan akan lebih baik jika menggunakan proses yang ada untuk memindai (300+) repo kami pemberitahuan penghentian untuk menandai semua yang perlu dimigrasikan.

Penghentian selalu dan hanya pernah diterapkan pada versi yang ada; jika Anda ingin versi baru tidak digunakan lagi, Anda harus selalu menghentikannya secara manual setelah diterbitkan.

Tidakkah menyenangkan bagi pengguna untuk menampilkan sesuatu yang sangat jelas tentang penghentian TSLint di halaman github https://palantir.github.io/tslint/?

Tidakkah menyenangkan bagi pengguna untuk menampilkan sesuatu yang sangat jelas tentang penghentian TSLint di halaman github https://palantir.github.io/tslint/?

Itulah tepatnya yang saya tunggu-tunggu! tolong seseorang berikan beberapa petunjuk langkah demi langkah yang jelas tentang migrasi dari tslint ke eslint

Situs web dokumentasi TSLint belum diperbarui cukup lama, tetapi README repo ini mutakhir dan ada cukup banyak informasi berguna, termasuk panduan langkah demi langkah untuk migrasi, di TypeScript-eslint README .

Perbaiki untuk Pesan Kesalahan
[https://stackoverflow.com/questions/61605380/angular-9-issue-unable-to-run-the-initial-application]
npm instal chokidar
npm cache bersih --force
npm install -g @angular/ cli@latest

install error
Halo tim Angular, saya baru mengenal angular, tolong bantu saya dengan kesalahan yang saya dapatkan saat mencoba membuat proyek baru.

Terima kasih.

Halo tim Angular, saya baru mengenal angular, tolong bantu saya dengan kesalahan yang saya dapatkan saat mencoba membuat proyek baru.

Terima kasih.

Anda berada di tempat yang salah
Ini palantir dan bukan angular
Harap buat masalah di https://github.com/angular/angular/issues
Atau bahkan lebih baik, cari jika sudah ada masalah atasi masalah ini
Senang bisa membantu, sampai jumpa

Sebanyak saya tercengang oleh mereka meminta 'di sini' untuk bantuan Angular .. Saya cukup terkesan logo mereka terlihat seperti soket listrik Inggris.

@JoshuaKGoldberg Terima kasih!

Hari juga harus tiba di mana Anda mengarsipkan/mengunci repositori ini.

Seharusnya tidak perlu perubahan kode lagi. Jika seseorang menemukan bug sekarang, solusinya adalah menggunakan ESLint daripada menggali proyek yang sudah lama usang ini.

Sangat menyenangkan melihat kebanyakan orang mencoba untuk pindah sekarang tetapi semakin eksplisit tentang meninggalkan ini, semakin baik.

Saya pikir ts-lint seharusnya tidak lagi digunakan sebagai gantinya mulai Sept 2020

Jika proyek Anda masih menggunakan ts-lint pertimbangkan untuk menggunakan
memeriksa https://github.com/typescript-eslint/tslint-to-eslint-config

tetapi TypeScript-eslint tidak benar-benar memberi tahu apa yang salah 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

😢.

tetapi TypeScript-eslint tidak benar-benar memberi tahu apa yang salah 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

😢.

Saya pikir ini kurang lebih benar bahkan untuk TSLint dan mengapa bahkan dengan TSLint, kami juga memanggil tsc --noEmit dalam skrip linting kami.

Saya membuat aplikasi sudut baru dengan versi 8 dan memiliki default tslint yang dikirimkan bersamanya. Saya sudah mulai menggunakan ts config untuk implementasi husky. Pertanyaan saya adalah, apakah wajib untuk pindah ke TypeScript-eslint seperti yang direkomendasikan mengingat fakta bahwa saya akan menggunakan Angular 8 dalam proyek saya selama beberapa tahun yang akan datang?

@mayankkalbhor Seperti yang Anda lihat, default dengan Angular masih menggunakan TSLint. Saya percaya itu akan sampai Angular 11 atau lebih baru sampai semua konfigurasi default di Angular CLI dikonfigurasi untuk ESLint, lihat peta jalan: https://angular.io/guide/roadmap#migration -to-eslint.

Jika Anda sudah menyiapkan sesuatu, Anda harus memigrasikannya sendiri sementara tidak ada yang benar-benar memaksa Anda untuk menggunakan ESLint alih-alih TSLint. Ini sepenuhnya pilihan Anda sendiri. Jika Anda lebih suka fitur di ESLint atau berencana menghabiskan waktu untuk benar-benar mengonfigurasi aturan Anda, mungkin migrasi adalah jalur untuk Anda. Namun, jika Anda tidak menghabiskan waktu untuk mengonfigurasi aturan TSLint Anda dan senang dengannya, Anda dapat terus menggunakannya tanpa batas. Hanya saja, jangan mengharapkan perbaikan bug dalam jumlah yang tidak terbatas dan tidak ada pembaruan fitur sama sekali.

Saya percaya jalur default untuk pengembang Angular adalah menunggu Angular untuk memasukkan skrip migrasi di beberapa peningkatan Angular di masa mendatang, kemungkinan dari Angular 10 hingga 11 atau 11 hingga 12.

Namun siapa pun bebas untuk bermigrasi ke ESLint sendiri. Satu-satunya pemblokir nyata untuk Anda memigrasikan diri sendiri adalah jika Anda punya waktu dan tidak keberatan kehilangan fitur yang saat ini tidak ada dalam konfigurasi ESLint yang setara. Di mana ada beberapa konfigurasi linting melalui Codelyzer sebelumnya dan kami sekarang memiliki pengganti yang akan datang di sini: angular-eslint

Saat kita mencapai EOL perangkat lunak, akan luar biasa, jika setiap dokumen aturan memiliki tautan ke aturan pengganti dalam dokumentasi TypeScript-eslint, seperti halnya TypeScript-eslint secara terbalik.

Apakah ini berarti saya tidak akan dapat menggunakan tslint dalam proyek saya setelah 1 Januari 2021? Saat ini build saya menggunakan tslint. Saya tidak melihat perintah apa pun untuk menginstal tslint di situs web npm. Dan dikatakan tslint sudah usang sekarang. Bisakah seseorang menjawab pertanyaan saya?

Terima kasih.

Anda dapat menggunakannya, tetapi Anda tidak akan mendapatkan dukungan apa pun dengan cara apa pun.
Juga tidak ada pembaruan lagi.
Jadi ya, Anda harus maju ke eslint.

Sebagai checkout terakhir saya, tslint mendukung lebih banyak jenis perbaikan otomatis, jadi saya sarankan untuk menjalankan 'tslint --fix' sebelum menjalankan eslint.

Hal-hal mungkin telah berubah sementara itu.

Saya akan mengurutkannya kode itu ya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat