Kullanılmayan ithalatı ve beyanları Angular 2+ 'den kaldırmanın bir yolu var mı?


139

Yakın zamanda şirketten ayrılmış olan diğer geliştiricilerden bazı karışık kodlar almakla görevlendirildim.

Merakla soruyorum, bir Visual Studio Code eklentisi veya içe aktarmaları ve referansları hızlı ve etkili bir şekilde düzenlememize ve düzenlememize yardımcı olabilecek başka araçlar var mı?

Örneğin, bunun gibi yüzlerce ithalat var

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

benzer şekilde dönüştürülebilir

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

Veya kullanılmayan içe aktarmaları ve bildirimleri app.module'dan veya tüm bileşenlerden tüm proje boyunca otomatik olarak kaldırmak gibi diğer işlevler?

Herhangi bir geri bildiriminiz için teşekkürler!


Ben de özellikle bileşenlere yapılan gereksiz ithalatların performans üzerinde bir engel olup olmadığını merak ediyorum.
Marcidius

8
stackoverflow.com/a/49697144/3914072 vscode 1.22 Shift + Alt + O - benim için çalışıyor!
Rajab Şakirov

Komut satırından (veya git hook) da yapılabilir: npmjs.com/package/organize-imports-cli
thorn̈

Yanıtlar:


171

Düzenleme (yorumlarda ve diğer kişilerde önerildiği gibi), Visual Studio Code gelişti ve bu işlevselliği aşağıdaki varsayılan klavye kısayollarıyla "İçe aktarmaları düzenle" komutu olarak yerleşik olarak sağlar :

option+ Shift+ OMac için

Alt + Shift + OWindows için


Orijinal cevap:

Umarım bu görsel stüdyo kod uzantısı ihtiyacınızı karşılayacaktır: https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero

Aşağıdaki özellikleri sağlar:

  • Projenizin veya kitaplıklarınızın içe aktarımlarını mevcut dosyanıza ekleyin
  • İmlecin altındaki mevcut ad için bir içe aktarma ekle
  • Bir dosyanın tüm eksik içe aktarımlarını tek bir komutla ekleyin
  • Semboller öneren ve yazdığınız kodu düzelten gerekli ithal "Ampul özelliğini" otomatik olarak ekleyen Intellisense
  • İçe aktarımlarınızı sıralayın ve düzenleyin ( kullanılmayanları sıralayın ve kaldırın )
  • Açık TS / TSX belgenizin kod anahat görünümü
  • JavaScript için de tüm harika şeyler! (yine de deneysel aşama, aşağıda daha iyi açıklama.)

Mac için: control+ option+o

Win için: Ctrl+ Alt+o


1
Beni bu eklentiye çevirdiğiniz için teşekkürler, harika! Yeni kurana kadar, o küçük işlevsellik parçasını (otomatik içe aktarma) halletmek için Otomatik İçe Aktarma uzantısını kurmuştum. Ama TypeScript Hero'yu kurduktan sonra ... vay, bağımlılıkları içe aktarma ifadeleri içinde alfabetik sıraya göre sıralama, bileşen sınıflarında kullanılmayan içe aktarmalardan kurtulma vb. Dahil, yapmam gereken her şeyi yapıyor!
Marcidius

2
2018'de TS Hero'nun proje sorumlusu, ana işlevlerin doğrudan VS Kodunda uygulanmasından sonra geçersiz hale geldiği için uzatmayı durduracağını söyledi (diğer satırlara bakın).
mattarau

2
Alt+Shift+Oİthalatı yeniden sipariş etmeden arama yapmanın bir yolu var mı?
XCS

Linux için de Alt + Shift + O
manuman94

155

Visual Studio Code Release 1.22'den itibaren bu, bir uzantıya ihtiyaç duymadan ücretsiz olarak sunulur.

Shift+ Alt+O sizinle ilgilenecek.


1
Güzel! Sonsuza kadar ctrl + shift + - kullanıyorum ve şimdi kısayolu bulup değiştirebiliyorum.
GeorgiG

Yüklemem gerekiyordu, 1.37.1 yüklememde gelmedi
yaşlı keşiş

58

Yoğun bir görsel stüdyo kullanıcısıysanız, tercih ayarlarınızı açıp aşağıdakileri ayarlarınıza ekleyebilirsiniz.json:

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

Umarım bu yardımcı olabilir!


3
Bu, ESLint Prettier eklentisiyle çelişiyor gibi görünüyor. Tek satırlık içe aktarma yapmaya çalışıyor ancak ESLint birden çok satıra bölünmeye çalışıyor.
Richard

@Richard ile aynı sorun. Açık bir sorun gibi görünüyor - github.com/prettier/prettier-vscode/issues/716
Craig

İthalatları sıralı tutarken kullanılmayan ithalatların kaldırılmasını devre dışı bırakmanın bir yolu var mı?
sunknudsen

mükemmel cevap. bunu uzun zamandır arıyor
Aamir Afridi

41

Kullanılmayan içe aktarmaları, kodu veya değişkenleri algılayabilmek için tsconfig.json dosyasında bu seçeneğe sahip olduğunuzdan emin olun.

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

typecript derleyicisini kurun, eğer kurmazsanız:

npm install -g typescript

ve Vcode'da kurulu tslint uzantısı, bu benim için çalıştı, ancak etkinleştirdikten sonra, özellikle büyük projelerde CPU kullanımında bir artış olduğunu fark ettim.

İçe aktarmalarınızı düzenlemek için typcript hero uzantısını kullanmayı da tavsiye ederim .


41

VSCode v.1.24 ve TypeScript v.2.9'dan beri:

Mac için: option+ Shift+O

Win için: Alt+ Shift+O


7
bazıları için daha önemli, komut Organize Importsoreditor.action.organizeImports
pcnate

@pcnate İçe aktarımları sıralı tutarken kullanılmayan ithalatların kaldırılmasını devre dışı bırakmanın bir yolu var mı?
sunknudsen

11

Bu ileti dizisinde zaten pek çok iyi yanıt var! Bunu otomatik olarak yapmaya çalışan herkese yardımcı olmak için bunu göndereceğim ! Tüm proje için kullanılmayan ithalatı otomatik olarak kaldırmak için bu makale bana gerçekten yardımcı oldu.

Makalede yazar bunu şöyle açıklıyor:

İçinde aşağıdakileri içeren bağımsız bir tslint dosyası oluşturun:

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

Ardından içe aktarmaları düzeltmek için aşağıdaki komutu çalıştırın:

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

Verdiği diğer hataları düzeltmeyi düşünün. (Yaptım)

Ardından inşa ederek proje çalışmalarını kontrol edin:

ng build

veya

ng build name_of_project --configuration=production 

Bitiş: Doğru bir şekilde oluşturulursa, içe aktarmaları otomatik olarak başarıyla kaldırmış olursunuz!

NOT: Bu yalnızca gereksiz içe aktarmaları ortadan kaldırır. Daha önce bahsedilen komutlardan birini kullanırken VS Code'un yaptığı diğer özellikleri sağlamaz.


Anlıyorum Could not find implementations for the following rules specified in the configuration: no-unused-declaration , sanırım bu çözüm artık çalışmıyor.
Yousuf Khan

Tslint sürümünü kullanıyorum5.20.1
Yousuf Khan

0

Blogunuza gidin tslint.jsonve mal değerini değiştirmek no-unused-variableiçinfalse


3
Bu, OP'nin sorduğunun tam tersi. Kullanılmayan değişkenlere sahip OLMAMAK istiyor, bu yüzden no-unused-variabledoğru olmalı. Sorulan şey, düzeltmenin (kullanılmayan değişkenlerin kaldırılması) otomatik olarak yapılıp yapılamayacağıdır, bu zaten yanıtlanmıştır.
mattarau
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.