Tslint: Fitur: File ".tslintignore" untuk mengecualikan gumpalan

Dibuat pada 5 Feb 2014  ·  57Komentar  ·  Sumber: palantir/tslint

Pembaruan (2016/06/01)

--exclude Bendera CLI tersedia sejak TSLint v3.6. Masalah ini sekarang melacak permintaan fitur untuk file .tslintignore .

Masalah asli

Cc: https://github.com/madskristensen/WebEssentials2013/issues/617

Dari JsHint docs , ada dua tanda untuk pengecualian dalam opsi cli:

--mengecualikan

Memungkinkan Anda menentukan direktori yang TIDAK ingin Anda beri linted.

--exclude-path

Memungkinkan Anda untuk menyediakan file .jshintigore Anda sendiri. Misalnya, Anda dapat mengarahkan JSHint ke file .gitignore Anda dan menggunakannya sebagai ganti .jshintignore default.

Harap berikan tanda serupa kepada kami, sehingga kami dapat meneruskan file .tslintignore untuk mengecualikan file dan folder ketika beberapa skrip pelaksana batch / otomatis menjalankan lint di atasnya.

Lihat implementasi JsHint untuk fitur ini: cli.js#L182-L208 dan pemanggilnya; fungsi berkumpul .

Aged Away Enhancement

Komentar yang paling membantu

Menabrak masalah berusia 3+ tahun yang diinginkan oleh ratusan orang, dengan PR yang berhasil diajukan, tetapi tidak ada tindakan selama setengah tahun.

Semua 57 komentar

saran yang bagus. kita akan melihat ke dalamnya.

+1

Untuk TSD saya ingin membuat ini di folder pengetikan pengguna saat memulai proyek baru.

+1

Ini diperlukan untuk memperlakukan kesalahan lint sebagai pemblokiran. Saya ingin kode saya dilapisi, bukan kode vendor.

+1

+1

+1 Ini adalah solusi yang kami butuhkan. Kami mendapatkan sejumlah kesalahan tslint pada file d.ts. Mampu mengecualikan folder dan file tertentu akan sangat penting karena kami juga tidak ingin kode lint yang tidak kami tulis.

Saya bersedia untuk mencoba ini tetapi saya tidak yakin di mana harus meletakkannya. Apakah kita ingin ini menjadi fitur cli atau kita ingin mendukung ini di perpustakaan juga?
Jika di perpustakaan agak aneh karena metode lint() mengembalikan objek hasil, jadi kita perlu mengembalikan objek hasil kosong yang agak dummy.
Lihat di sini untuk Pekerjaan yang Sedang Berlangsung tapi ya, tidak yakin tentang hal-hal di atas.
https://github.com/DickvdBrink/tslint/compare/palantir :master...Di ckvdBrink:ignoreFile

Kami menggunakan Visual Studio dan alat Web Essentials. Bagi kami, alur kerja yang ideal adalah menentukan file .tjshintignore yang akan berisi sesuatu seperti typings\ yang akan mengabaikan semua file d.ts di folder itu. Saya tidak yakin apakah Web Essentials menggunakan fitur cli atau perpustakaan sehingga sulit bagi saya untuk mengetahuinya. Saya sebenarnya sekarang agak bingung, karena saya menemukan utas ini yang sepertinya menunjukkan solusi untuk ini mungkin sudah ada? https://github.com/madskristensen/WebEssentials2013/issues/617

Saya pikir mereka menggunakan cli.
https://github.com/madskristensen/WebEssentials2013/blob/aaa83c3f6f7c9b051d7ef34be8498c6b67f37fca/EditorExtensions/TypeScript/Linters/TsLintCompiler.cs

Saya pikir itu ditutup karena seseorang membuat masalah ini, lihat kutipan di bawah ini:

Would you like to send them a feature request?
I see somebody already has. Thanks :-)

Ah, itu masuk akal. Salah baca itu.

Saya pikir menerapkannya melalui CLI baik-baik saja untuk saat ini. orang yang menggunakan grunt-tslint sudah dapat mengecualikan file melalui globbers file/direktori grunt.

Kami juga mempertimbangkan pengecualian global untuk semua layanan berbasis node di Web Essentials: https://github.com/madskristensen/WebEssentials2013/issues/589. Meskipun demikian, memiliki fitur itu di tslint memiliki arti tersendiri.

Pembaruan: Dalam web-essential, fitur ini dikirimkan dengan nightly build v2.2.4.

ada update tentang ini?

Ini sepertinya fitur yang relatif penting yang harus diprioritaskan. Ingin mencatat minat pada fitur ini dari pertanyaan SO .

Saya tidak terlalu berpikir bahwa file .tslintignore diperlukan, saya lebih suka ide yang lebih sederhana untuk menambahkan opsi --exclude CLI.

Mungkin lebih baik untuk mendukung ini melalui tsconfig.json (#858) daripada mengimplementasikan ulang ini dalam tanda CLI...

Hmm, kesulitannya adalah Anda mungkin ingin mengkompilasi file yang berbeda dari lint Anda. Jadi saya berpotensi melihat menggunakan tsconfig.json dan kemudian juga menggunakan --exclude untuk tidak memasukkan beberapa file yang biasanya disertakan.

Berbeda dengan CLI, apakah ini tidak cocok secara alami di file tslint.json dan kemudian tambahkan centang abaikan yang mem-parsing "ignorePaths" di https://github.com/palantir/tslint/blob/master/src/tslint .ts#L46 ?

+1

+1, .tslintignore akan bagus

+1 untuk .tslintignore atau tambahkan opsi untuk mengabaikan jalur tertentu di tsconfig.json
Itu bisa mirip dengan https://github.com/bbatsov/rubocop#termasuk tidak termasuk -file

Apakah Anda memerlukan bantuan untuk menerapkannya?

Sebagai umpan pertama, kami akan segera menggabungkan #1006, yang menambahkan opsi CLI --exclude sederhana. Apakah itu membawa Anda ke sana? Jika Anda menggunakan alat tambahan selain tslint , maka itu mungkin memiliki dukungan glob/exclude (grunt / gulp / etc). Seberapa penting dukungan ini di tslint.json ?

Saya tidak lagi memanggil tslint dari skrip NPM tetapi mungkin penting bagi orang-orang yang melakukannya karena NPM tidak menyediakan (dan saya percaya itu tidak akan pernah) dukungan glob lintas platform.

Saya rasa bukan ide yang baik untuk menambahkan opsi untuk file yang Anda inginkan atau tidak ingin lint di file tslint.json . Sepertinya tidak cocok di sana. Itu juga tidak konsisten dengan bagaimana jshint dikonfigurasi. Ya, mereka adalah dua alat yang berbeda tetapi mereka praktis melakukan hal yang sama. Karena TS adalah kumpulan super JS, harus ada konsistensi di antara keduanya. Saya lebih suka memiliki file .tslintignore (seperti .jshintignore ) untuk menjaga konsistensi antara JS dan TS. Pisahkan dari tsconfig.json karena linting tidak dikompilasi.

+1 untuk opsi CLI, ini awal yang baik.

Ingin menyebutkan bahwa #1006 digabungkan dan dirilis sekitar sebulan yang lalu, jadi jika Anda menggunakan versi terbaru dari TSLint CLI, Anda akan memiliki flag exclude yang tersedia untuk digunakan.

+1

+1

+1

apa yang orang beri +1 di sini? flag --exclude telah tersedia di CLI sejak v3.6 yang memungkinkan Anda untuk mengecualikan gumpalan (file, jalur, apa pun).

@adidahiya Itu tidak membantu dengan WebStorm, misalnya. Tidak ada opsi untuk menentukan bendera.

Saya mengerti, bahwa itu harus menjadi permintaan fitur untuk pengembang WebStorm, tetapi tampaknya itu sangat mudah diterapkan di sisi ts-lint. Dan itu dilakukan untuk pustaka linting lainnya secara default. Jadi mengapa tidak membuatnya begitu?

@fyodorvi keren, saya memperbarui judul dan deskripsi masalah. Kami mungkin ingin menyelesaikan jalur file .tslintignore dengan cara yang sama seperti kami menyelesaikan tslint.json .

Pro / kontra dari file baru vs menjadikannya bidang baru di tslint.json ?

Ada solusi untuk mereka yang ingin menggunakan tslint dengan WebStorm:
Anda bisa meletakkan file tslint.json kosong (dengan '{}' di dalamnya) di folder node_modules Anda dan mengaktifkan opsi 'Search for tslint.json` di WS. Itu akan sepenuhnya mengatur ulang semua aturan tslint untuk folder node_modules, dan itu akan diam tentang kode vendor (atau Anda dapat menambahkan aturan khusus di sini jika Anda mau)

Saya telah mengikuti utas ini untuk dapat mengecualikan file secara khusus menggunakan vscode (sejak sebelum namanya diubah menjadi spesifik .tslintigore). Saya ingin memberi tahu orang lain yang mencoba mengintegrasikan pengecualian dengan vscode bahwa ada masalah terpisah dan PR terbaru untuk pengecualian tslint khusus vscode.

@adidahiya bidang dengan array dir atau file di dalam tslint.json sudah cukup, saya lebih suka tidak khawatir tentang file lain untuk mengontrol bisnis ini ketika kita sudah memiliki file konfigurasi yang ditentukan dalam sebuah proyek.

@Karabur solusi Anda tidak berhasil untuk saya, saya bahkan mencoba menambahkan objek aturan kosong, apakah saya melewatkan sesuatu?

Satu file sudah cukup. Ini juga akan sejalan dengan cara kerja tsconfig,json.

Opsi exclude di tslint.json akan lebih baik (hanya satu file yang digunakan dengan cara itu) dan itu adalah nama bagian abaikan glob dari tsconfig.json as baik (ya tsconfig.json include/exclude sekarang mendukung gumpalan di TypeScript terbaru)

Adakah yang tahu apa yang dilakukan eslint karena saya yakin mereka juga akan terkena ini? :mawar:

Saat ini, tslint.json tidak memiliki kontrol atas _what_ yang di-linted, hanya mengontrol _how_ file yang di-linted. Faktanya, tergantung pada bagaimana Anda mengaturnya, TSLint CLI sebenarnya dapat membuat file yang berbeda dengan aturan yang berbeda, semuanya dalam proses yang sama.

Saya tidak menentang opsi exclude di tslint.json , tetapi itu mungkin akan menjadi sedikit perubahan paradigma dan harus dipikirkan dengan cermat.

PS Selalu senang mendengar tanggapan Anda @basarat , baru saja membaca gitbook TS Anda hari ini

Saya baru saja merilis versi baru alm dengan tslint yang terintegrasi dengan versi 0.3.0 :heart:

linter

Setelah duduk di otak saya, inilah ringkasan desain yang saya gunakan untuk integrasi IDE dan tampaknya berhasil dengan baik:

  • semua file dalam tsconfig.json saat ini berserat kecuali untuk file .d.ts
  • tslint.json harus ditentukan menggunakan findup dari tsconfig.json .

Saya telah mendokumentasikan ini di sini juga: https://basarat.gitbooks.io/alm/content/features/lint.html Jangan ragu untuk menggunakan ide/sumber untuk integrasi IDE lainnya :rose:

@basarat Saya pikir pilihan itu terdengar sempurna! Saya belum mencoba alm, tetapi saya harus mencobanya dalam waktu dekat

Harap berhenti memposting komentar +1 dan gunakan fitur upvoting Github bawaan pada deskripsi masalah asli. Saya akan menghapus komentar +1 Anda sekarang.

Tiga tahun telah berlalu, dan ini masih belum dilaksanakan? Bagaimana tidak, ini adalah salah satu fitur IMO yang paling sepele dan penting.

Tiga tahun telah berlalu, dan ini masih belum dilaksanakan? Bagaimana tidak, ini adalah salah satu fitur IMO yang paling sepele dan penting.

Bagaimanapun, ini adalah OSS: jika Anda menginginkannya, ajukan PR.

Masalah saat ini bagi saya adalah:

--exclude {node_modules,.git,cache}

Operator {} tidak berfungsi dan saya tidak melihat cara untuk mengecualikan direktori yang berbeda...

@monolit :

--exclude node_modules --exclude .git --exclude cache

harus melakukan apa yang Anda inginkan

Tiga tahun telah berlalu, dan ini masih belum dilaksanakan? Bagaimana tidak, ini adalah salah satu fitur IMO yang paling sepele dan penting.

Bagaimanapun, ini adalah OSS: jika Anda menginginkannya, ajukan PR.

Saya telah mengirimkan PR: https://github.com/palantir/tslint/issues/2409

@abenhamdine ada ide siapa yang harus saya minta untuk ditinjau?

Menabrak masalah berusia 3+ tahun yang diinginkan oleh ratusan orang, dengan PR yang berhasil diajukan, tetapi tidak ada tindakan selama setengah tahun.

Terima kasih atas benjolannya. Perhatikan bahwa PR tertaut, #2409, adalah untuk opsi konfigurasi baru di tslint.json , yang tidak persis sama dengan masalah aslinya ( file .tslintignore ). Ini adalah langkah ke arah yang benar; Saya telah meninggalkan beberapa komentar CR lagi.

+1
Pilihan:

  • File .tslintignore ke folder yang akan diabaikan.
  • File tslint.json (global file) properti baru exclude dengan daftar path/folder.
    Ini akan menyenangkan.

Omong-omong, fitur dirilis di [email protected]

Benar. Contoh:
Buat folder di proyek Anda dengan nama .vscode dan file di dalamnya settings.json .

{
  "tslint.exclude": "**/app/models/**"
}

untuk mengabaikan semua file di /app/models/. Jangan ragu untuk meningkatkan ekspresi. :)

+1

+1
butuh .tslintignore

Oh hei, ini seharusnya didukung sekarang oleh linterOptions . Sesuai https://palantir.github.io/tslint/usage/configuration/ :

  • linterOptions?: { exclude?: string[] } :

    • exclude: string[] : Array gumpalan. File apa pun yang cocok dengan gumpalan ini tidak akan dilapisi. Semua pola pengecualian relatif terhadap file konfigurasi tempat mereka ditentukan.

Apakah ini bekerja cukup baik untuk semua orang? Apakah ada hal lain yang harus dilakukan .tslintignore ?

/cc @am11 , @basarat

Hai @JoshuaKGoldberg , itu awal yang baik. Saya pikir apa yang diharapkan banyak orang di utas ini dari file .tslintignore selain fungsionalitas adalah bahwa file itu akan sesuai dengan standar yang telah ditetapkan oleh git, npm, eslint, dll. Orang-orang menyukai standar ini, merasa sangat nyaman dengan itu, dan agak mengharapkannya - misalnya saya menemukan masalah ini ketika saya membuat file .tslintignore dengan asumsi itu akan berhasil, dan terkejut (benar atau salah) ketika tidak.

Hmm. Saya ragu memiliki dua standar tentang bagaimana ini seharusnya bekerja. Jika Anda memiliki .tslintignore dan linterOptions.exclude dalam direktori, bagaimana cara kerjanya?

Sunting: oh, dan TypeScript juga mematahkan tren .*ignore dengan tsconfig.json .

eslint dan stylelint keduanya mendukung opsi --ignore-path CLI flag atau ignorePath JS. Mengapa tslint tidak?
Tolong tambahkan dukungan untuk ini! :berdoa:

Mengingat #4534 dan linterOptions.exclude solusi, ini tampaknya di luar cakupan untuk TSLint sekarang. Pendekatan yang disarankan adalah bermigrasi ke TypeScript-eslint ; jika Anda perlu mengecualikan beberapa file TypeScript dari linting TSLint, gunakan linterOptions.exclude . Menutup masalah ini untuk rumah tangga.

Jika ada beberapa pemblokir di linterOptions.exclude yang mempersulit migrasi, harap ajukan masalah baru untuk melaporkan bug!

Bunyi bip! TSLint tidak digunakan lagi dan Anda harus beralih ke TypeScript-eslint ! 🤖.

Masalah ini sedang dikunci untuk mencegah diskusi lebih lanjut yang tidak perlu. Terima kasih! 👋.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat