C'è un modo per rimuovere le importazioni e le dichiarazioni non utilizzate da Angular 2+?


139

Mi è stato assegnato il compito di prendere del codice incasinato da altri sviluppatori che hanno già lasciato la società di recente.

Sto curiosamente chiedendo: esiste qualche plug-in di Visual Studio Code o altri mezzi che potrebbero aiutarci a riordinare e organizzare le importazioni e i riferimenti in modo rapido ed efficace?

Ad esempio, ci sono forse centinaia di importazioni come questa

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

potrebbe essere convertito in modo simile

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

O altre funzioni come la rimozione automatica di tali importazioni e dichiarazioni inutilizzate dal modulo app o da tutti i componenti attraverso l'intero progetto?

Grazie per qualsiasi feedback!


Anch'io mi chiedo se le importazioni estranee in componenti in particolare siano un freno per le prestazioni.
Marcidio

8
stackoverflow.com/a/49697144/3914072 vscode 1.22 Shift + Alt + O - funziona per me!
Rajab Shakirov

Può essere fatto anche dalla riga di comando (o git hook): npmjs.com/package/organize-imports-cli
thorn̈

Risposte:


169

Modifica (come suggerito nei commenti e in altre persone), Visual Studio Code si è evoluto e fornisce questa funzionalità integrata come il comando "Organizza le importazioni", con le seguenti scorciatoie da tastiera predefinite :

option+ Shift+ Oper Mac

Alt + Shift + Oper Windows


Risposta originale:

Spero che questa estensione del codice di Visual Studio sia sufficiente per le tue esigenze: https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero

Fornisce le seguenti funzionalità:

  • Aggiungi le importazioni del tuo progetto o delle tue librerie al tuo file attuale
  • Aggiungi un'importazione per il nome corrente sotto il cursore
  • Aggiungi tutte le importazioni mancanti di un file con un comando
  • Intellisense che suggerisce simboli e aggiunge automaticamente le "Lampadine" necessarie per l'importazione che corregge il codice che hai scritto
  • Ordina e organizza le tue importazioni (ordina e rimuovi inutilizzati )
  • Vista di struttura del codice del documento TS / TSX aperto
  • Tutte le cose interessanti anche per JavaScript! (fase sperimentale, migliore descrizione di seguito).

Per Mac: control+ option+o

Per Win: Ctrl+ Alt+o


1
Grazie per avermi trasformato in questo componente aggiuntivo, è incredibile! Fino a quando non l'ho appena installato, avevo installato l'estensione di importazione automatica per occuparmi di quel piccolo pezzo di funzionalità (importazione automatica). Ma dopo aver installato TypeScript Hero ... wow, fa tutto ciò di cui ho bisogno, incluso l'ordinamento delle dipendenze in ordine alfabetico all'interno delle stesse istruzioni di importazione, eliminando le importazioni che non vengono utilizzate nelle classi dei componenti, ecc.
Marcidio

2
Nel 2018 il manutentore del progetto TS Hero ha dichiarato che avrebbe interrotto l'estensione, poiché è diventata obsoleta dopo l'implementazione delle principali funzionalità direttamente in VS Code (vedi altri commenti).
Mattarau,

2
Un modo per chiamare Alt+Shift+Osenza riordinare le importazioni?
XCS

Alt + Maiusc + O anche per Linux
manuman94

155

A partire dalla versione 1.22 di Visual Studio, questo è gratuito senza la necessità di un'estensione.

Shift+ Alt+O si prenderà cura di te.


1
Bello! Sto usando ctrl + shift + - da sempre e ora posso trovare e cambiare il collegamento.
GeorgiG

Ho dovuto installarlo, non è arrivato nella mia installazione di 1.37.1
vecchio monaco il

57

Se sei un utente pesante di Visual Studio, puoi semplicemente aprire le impostazioni delle preferenze e aggiungere quanto segue alle tue settings.json:

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

Spero che questo possa essere utile!


3
Questo sembra essere in conflitto con il plug-in ESLint Prettier. Sta cercando di effettuare un'importazione su una riga ma ESLint sta tentando di interrompere più righe.
Richard

Stesso problema di @Richard. Sembra essere un problema aperto - github.com/prettier/prettier-vscode/issues/716
Craig

Esiste un modo per disabilitare la rimozione delle importazioni non utilizzate mantenendo ordinate le importazioni?
Sunknudsen,

Bella risposta. lo cerco da anni
Aamir Afridi

41

Per poter rilevare importazioni, codice o variabili non utilizzati, assicurati di avere queste opzioni nel file tsconfig.json

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

avere il compilatore dattiloscritto installato, se non installarlo con:

npm install -g typescript

e l' estensione tslint installata in Vcode, questo ha funzionato per me, ma dopo averlo abilitato noto un aumento dell'utilizzo della CPU, specialmente su grandi progetti.

Consiglierei anche di utilizzare l' estensione dell'eroe dattiloscritto per organizzare le tue importazioni.


41

Da VSCode v.1.24 e TypeScript v.2.9:

Per Mac: option+ Shift+O

Per Win: Alt+ Shift+O


7
più importante per alcuni, il comando è Organize Importsoeditor.action.organizeImports
pcnate il

@pcnate Esiste un modo per disabilitare la rimozione delle importazioni non utilizzate mantenendo ordinate le importazioni?
Sunknudsen,

11

Ci sono già così tante buone risposte su questa discussione! Pubblicherò questo per aiutare chiunque cerchi di farlo automaticamente ! Per rimuovere automaticamente le importazioni non utilizzate per l'intero progetto, questo articolo mi è stato davvero utile.

Nell'articolo l'autore lo spiega in questo modo:

Crea un file tslint autonomo che contenga quanto segue:

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

Quindi eseguire il comando seguente per correggere le importazioni:

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

Valuta di correggere eventuali altri errori che genera. (L'ho fatto)

Quindi controlla che il progetto funzioni costruendolo:

ng build

o

ng build name_of_project --configuration=production 

Fine: se viene compilato correttamente, le importazioni sono state rimosse automaticamente con successo!

NOTA: questo rimuove solo le importazioni non necessarie. Non fornisce le altre funzionalità di VS Code quando si utilizza uno dei comandi precedentemente menzionati.


Capisco Could not find implementations for the following rules specified in the configuration: no-unused-declaration , quindi immagino che questa soluzione non funzioni più.
Yousuf Khan,

Sto usando la versione tslint5.20.1
Yousuf Khan il

0

vai al tuo tslint.jsone modifica il valore della proprietà no-unused-variableinfalse


3
Questo è esattamente l'opposto di ciò che l'OP ha chiesto. Vuole NON avere variabili inutilizzate, quindi no-unused-variabledovrebbe essere vero. Ciò che è stato chiesto è se la correzione (rimozione delle variabili non utilizzate) può essere eseguita automaticamente, a cui è già stata data una risposta.
Mattarau,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.