Angular 2+から未使用のインポートと宣言を削除する方法はありますか?


139

私は最近退職した他の開発者からいくつかのめちゃくちゃなコードを取得するよう割り当てられています。

不思議なことに、インポートと参照を迅速かつ効果的に整理して整理するのに役立つVisual Studio Codeまたはその他の手段のプラグインはありますか?

たとえば、このようなインポートはおそらく数百あります

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

同様に変換することができます

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

または、app.moduleまたはプロジェクト全体のすべてのコンポーネントから未使用のインポートと宣言を自動的に削除するような他の関数?

フィードバックをありがとう!


特に、コンポーネントへの無関係なインポートがパフォーマンスの妨げになるかどうかも疑問に思っています。
Marcidius

8
stackoverflow.com/a/49697144/3914072 vscode 1.22 Shift + Alt + O-私のために働く!
Rajab Shakirov

あまりにも、コマンドライン(またはgitのフック)から行うことができます。npmjs.com/package/organize-imports-cli
ソーン

回答:


168

編集(コメントや他の人の提案に従って)、Visual Studio Codeは進化し、この機能をコマンド「インポートの整理」として組み込み、次のデフォルトのキーボードショートカットで提供しています。

option+ Shift+ OMac

Alt + Shift + OWindowsの場合


元の答え:

このビジュアルスタジオコード拡張があなたのニーズを十分に満たすことを願っています:https : //marketplace.visualstudio.com/items? itemName=rbbit.typescript-hero

次の機能を提供します。

  • プロジェクトまたはライブラリのインポートを現在のファイルに追加する
  • カーソルの下に現在の名前のインポートを追加する
  • 1つのコマンドでファイルのすべての不足しているインポートを追加する
  • シンボルを提案し、必要なインポートを自動的に追加するIntellisenseは、作成したコードを修正する「電球機能」
  • インポートの並べ替えと整理(未使用の並べ替えと削除
  • 開いているTS / TSXドキュメントのコード概要ビュー
  • JavaScriptのすべてのクールなものも!(ただし、実験段階ですが、以下で詳しく説明します。)

Macの場合:control+ option+o

Winの場合:Ctrl+ Alt+o


1
私をこのアドオンに変えてくれてありがとう、それは素晴らしいです!インストールするまでは、自動インポート拡張機能をインストールして、その小さな機能(自動インポート)を処理していました。しかし、TypeScriptヒーローをインストールした後...わあ、インポートステートメント自体の中で依存関係をアルファベット順に並べ替えたり、コンポーネントクラス内で使用されていないインポートを削除したりするなど、必要なことはすべて実行します。
Marcidius

2
2018年、TSヒーローのプロジェクトメンテナー、VS Codeに主要な機能を直接実装した後に廃止されたため、拡張を中止すると述べました(他のコメントを参照)。
mattarau

2
Alt+Shift+Oインポートを並べ替えずに呼び出す方法はありますか?
XCS

Linuxの場合もAlt + Shift + O
manuman94

155

Visual Studio Codeリリース1.22以降、これは拡張機能を必要とせずに無料で提供されます。

Shift+ Alt+Oが面倒を見てくれます。


1
いいね!私はずっと以前からctrl + shift +-を使用してきましたが、ショートカットを見つけて変更できるようになりました。
GeorgiG

私はそれをインストールしなければなりませんでしたが、1.37.1のインストールには含まれていませんでした
old-monk

57

ビジュアルスタジオのヘビーユーザーは、設定を開いて、settings.jsonに以下を追加するだけです。

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

うまくいけば、これは役に立ちます!


3
これはESLint Prettierプラグインと競合するようです。1行のインポートを行おうとしていますが、ESLintは複数行に分割しようとしています。
Richard

@Richardと同じ問題。未解決の問題のようです-github.com/prettier/prettier-vscode/issues/716
Craig

インポートをソートしたまま、未使用のインポートの削除を無効にする方法はありますか?
sunknudsen

素晴らしい答え。年齢を問わずこれを探していました
Aamir Afridi

41

未使用のインポート、コード、変数を検出できるようにするには、tsconfig.jsonファイルにこのオプションがあることを確認してください

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

typescriptコンパイラーがインストールされている場合、インストールされていない場合:

npm install -g typescript

Vcodeにインストールされているtslint拡張機能はこれでうまくいきましたが、有効にした後、特に大きなプロジェクトで、CPU使用量の増加に気付きました。

インポートを整理するためにtypescript hero拡張を使用することもお勧めします。


41

VSCode v.1.24およびTypeScript v.2.9以降:

Macの場合:option+ Shift+O

Winの場合:Alt+ Shift+O


7
一部の人にとってより重要なのは、コマンドはOrganize Importseditor.action.organizeImports
次のとおり

@pcnateインポートをソートしたまま、未使用のインポートの削除を無効にする方法はありますか?
sunknudsen

11

このスレッドにはすでに多くの良い答えがあります!これを投稿して、これを自動的に実行しようとしている人を支援します!プロジェクト全体の未使用のインポートを自動的に削除するために、この記事は本当に役に立ちました。

記事では、著者は次のように説明しています。

次の内容を含むスタンドアロンのtslintファイルを作成します。

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

次に、次のコマンドを実行してインポートを修正します。

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

スローするその他のエラーを修正することを検討してください。(やった)

次に、プロジェクトをビルドして確認します。

ng build

または

ng build name_of_project --configuration=production 

終了:正しくビルドされていれば、インポートは自動的に削除されています。

注:これにより、不要なインポートのみが削除されます。前述のコマンドのいずれかを使用するときにVSコードが行う他の機能は提供しません。


なるCould not find implementations for the following rules specified in the configuration: no-unused-declaration ので、このソリューションはもう機能しないと思います。
Yousuf Khan

私はtslintバージョンを使用しています5.20.1
Yousuf Khan

0

あなたのところへ行きtslint.json、プロパティの値no-unused-variablefalse


3
これは、OPが要求したものとは正反対です。S /彼は未使用の変数を持たないことを望んでいるのでno-unused-variable、真でなければなりません。既に回答済みの修正(未使用の変数の削除)を自動的に実行できるかどうかが尋ねられます。
mattarau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.