Apakah ada cara untuk menghapus impor dan deklarasi yang tidak digunakan dari Angular 2+?

139

Saya ditugaskan untuk mengambil beberapa kode kacau dari pengembang lain yang telah meninggalkan perusahaan baru-baru ini.

Saya ingin tahu bertanya apakah ada beberapa plug-in dari Visual Studio Code atau cara lain yang dapat membantu kita untuk merapikan dan mengatur impor dan referensi dengan cepat dan efektif?

Misalnya, mungkin ada ratusan impor seperti ini

import { AutoCompleteModule,InputSwitchModule } from 'primeng/primeng';
import { ListboxModule } from 'primeng/primeng';

dapat dikonversi menjadi serupa

import { AutoCompleteModule,
         InputSwitchModule,
         ListboxModule  } from 'primeng/primeng';

Atau fungsi lain seperti menghapus secara otomatis impor dan deklarasi yang tidak digunakan dari app.module atau dari semua komponen melalui keseluruhan proyek?

Terima kasih atas umpan baliknya!

main ski
sumber
Saya juga bertanya-tanya apakah impor asing ke komponen khusus adalah hambatan pada kinerja.
Marcidius
8
stackoverflow.com/a/49697144/3914072 vscode 1.22 Shift + Alt + O - bekerja untuk saya!
Rajab Shakirov
Dapat dilakukan dari baris perintah (atau git hook) juga: npmjs.com/package/organize-import-cli
thorn̈

Jawaban:

168

Edit (seperti yang disarankan dalam komentar dan orang lain), Visual Studio Code telah berevolusi dan menyediakan fungsionalitas ini built-in sebagai perintah "Atur impor", dengan pintasan keyboard default berikut :

option+ Shift+ Ountuk Mac

Alt + Shift + Ountuk Windows


Jawaban asli:

Saya harap ekstensi kode visual studio ini akan mencukupi kebutuhan Anda: https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero

Ini menyediakan fitur berikut:

  • Tambahkan impor proyek atau pustaka Anda ke file Anda saat ini
  • Tambahkan impor untuk nama saat ini di bawah kursor
  • Tambahkan semua impor file yang hilang dengan satu perintah
  • Intellisense yang menyarankan simbol dan secara otomatis menambahkan impor yang diperlukan "fitur bola lampu" yang memperbaiki kode yang Anda tulis
  • Mengurutkan dan mengatur impor Anda (mengurutkan dan menghapus yang tidak digunakan )
  • Tampilan kode garis besar dokumen TS / TSX terbuka Anda
  • Semua hal keren untuk JavaScript juga! (tahap eksperimental, deskripsi yang lebih baik di bawah ini.)

Untuk Mac: control+ option+o

Untuk Menang: Ctrl+ Alt+o

Muhammad Rehan Qadri
sumber
1
Terima kasih telah mengubah saya menjadi pengaya ini, sangat bagus! Sampai saya baru saja menginstalnya saya dulu memiliki ekstensi Impor-Otomatis yang diinstal untuk menjaga sedikit fungsionalitas (impor otomatis). Tetapi setelah menginstal TypeScript Hero ... wow, itu melakukan semua yang saya butuhkan untuk melakukannya, termasuk menyortir dependensi dalam urutan abjad dalam laporan impor sendiri, menyingkirkan impor yang tidak digunakan dalam kelas komponen, dll!
Marcidius
2
Pada tahun 2018, pengelola proyek TS Hero mengatakan ia akan menghentikan perpanjangan, karena telah menjadi usang setelah implementasi fungsi-fungsi utama secara langsung dalam Kode VS (lihat komentar lain).
mattarau
2
Adakah cara untuk menelepon Alt+Shift+Otanpa memesan kembali impor?
XCS
Alt + Shift + O untuk Linux juga
manuman94
155

Pada Visual Studio Code Release 1.22 ini gratis tanpa perlu ekstensi.

Shift+ Alt+O akan menjagamu.

Aaron Jordan
sumber
1
Bagus! Saya telah menggunakan ctrl + shift + - sejak selamanya dan sekarang saya dapat menemukan dan mengubah pintasan.
GeorgiG
Saya harus menginstalnya, tidak datang pada instalasi saya dari 1.37.1
old-monk
57

Jika Anda adalah pengguna studio visual yang berat, Anda dapat membuka pengaturan preferensi Anda dan menambahkan yang berikut ke pengaturan Anda.

...
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
  "source.organizeImports": true
}
....

Semoga ini bisa membantu!

JayKan
sumber
3
Ini tampaknya bertentangan dengan plugin ESLint Prettier. Itu mencoba untuk membuat impor satu baris tetapi ESLint mencoba untuk memecah dalam beberapa baris.
Richard
Masalah yang sama dengan @Richard. Tampaknya menjadi masalah terbuka - github.com/prettier/prettier-vscode/issues/716
Craig
Apakah ada cara untuk menonaktifkan penghapusan impor yang tidak digunakan sambil menjaga impor diurutkan?
sunknudsen
jawaban yang bagus sudah lama mencari ini
Aamir Afridi
41

Untuk dapat mendeteksi impor, kode, atau variabel yang tidak digunakan, pastikan Anda memiliki opsi ini di file tsconfig.json

"compilerOptions": {
    "noUnusedLocals": true,
    "noUnusedParameters": true
}

sudah menginstal kompiler naskah, jika tidak menginstalnya dengan:

npm install -g typescript

dan ekstensi tslint diinstal dalam Vcode, ini bekerja untuk saya, tetapi setelah mengaktifkan saya perhatikan peningkatan jumlah penggunaan CPU, khususnya pada proyek-proyek besar.

Saya juga merekomendasikan untuk menggunakan ekstensi pahlawan naskah untuk mengatur impor Anda.

Matheus Frik
sumber
41

Sejak VSCode v.1.24 dan TypeScript v.2.9:

Untuk Mac: option+Shift+O

Untuk Menang: Alt+ Shift+O

kenny
sumber
7
lebih penting bagi sebagian orang, perintahnya adalah Organize Importsataueditor.action.organizeImports
pcnate
@pcnate Apakah ada cara untuk menonaktifkan penghapusan impor yang tidak digunakan sambil menjaga impor diurutkan?
sunknudsen
11

Sudah ada begitu banyak jawaban bagus di utas ini! Saya akan memposting ini untuk membantu siapa saja yang mencoba melakukan ini secara otomatis ! Untuk secara otomatis menghapus impor yang tidak digunakan untuk seluruh proyek, artikel ini sangat membantu saya.

Dalam artikel tersebut penulis menjelaskannya seperti ini:

Buat file tslint yang berdiri sendiri yang memiliki yang berikut di dalamnya:

{
  "extends": ["tslint-etc"],
  "rules": {
    "no-unused-declaration": true
  }
}

Kemudian jalankan perintah berikut untuk memperbaiki impor:

 tslint --config tslint-imports.json --fix --project .

Pertimbangkan untuk memperbaiki kesalahan lain yang dilemparnya. (Aku melakukannya)

Kemudian periksa pekerjaan proyek dengan membangunnya:

ng build

atau

ng build name_of_project --configuration=production 

Akhir: Jika dibuat dengan benar, Anda telah berhasil menghapus impor secara otomatis!

CATATAN: Ini hanya menghilangkan impor yang tidak perlu. Itu tidak menyediakan fitur lain yang VS Code lakukan ketika menggunakan salah satu perintah yang disebutkan sebelumnya.

Matt Bussing
sumber
Saya mengerti Could not find implementations for the following rules specified in the configuration: no-unused-declaration , jadi saya kira solusi ini tidak berfungsi lagi.
Yousuf Khan
Saya menggunakan versi tslint5.20.1
Yousuf Khan
0

buka Anda tslint.jsondan ubah nilai properti no-unused-variablemenjadifalse

Mohamed Ali RACHID
sumber
3
Ini persis kebalikan dari apa yang diminta OP. Ia ingin TIDAK memiliki variabel yang tidak digunakan sehingga no-unused-variableharus benar. Yang ditanyakan adalah apakah perbaikan (penghapusan variabel yang tidak digunakan) dapat dilakukan secara otomatis, yang telah dijawab.
mattarau