"Organize Imports" should adjust specifiers based on preferences

オープン
#58,642 コメント 3 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
typescript, vscode

調査の方向性

TypeScript: Sort imports コマンドと、issue で説明されている language-server の quick-fix の動作から始めます。typescript.preferences.importModuleSpecifier、tsconfig baseUrl、paths が生成される import specifier にどのような影響を与えるかを追跡します。import がソートされ、対象となるパスがこれらの設定に従って一貫して調整されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Domain: LS: Organize Imports In Discussion Suggestion
🔍 Search Terms

"sort imports", "organize imports"

✅ Viability Checklist
⭐ Suggestion

I have a feature request for the language server / it's commands.

So I have a large project, and I have not changed tsconfig.json since the beginning of the time.
Now I "discovered" what baseUrl does, what paths does, and that there is an option in vscode - ```

"typescript.preferences.importModuleSpecifier": "non-relative", // | "project-relative" | "relative" | "shortest"`.

So I have a file, deep inside the source - which imports from a file, close to the root.
Before I added 'baseUrl' - it did

import { bar } from "../../../../../foo/bar";`

After adding "baseUrl": "./src/" in tsconfig - this could be written as

import { bar } from "foo/bar";`

bar();

If I delete the import, and go to the bar() to fix the import issue - it provides me quick fix -

  • Add import from "foo/bar" if I have specified "typescript.preferences.importModuleSpecifier": "shortest" in settings., or
  • Add import from "../../../../../foo/bar" if I have specified "typescript.preferences.importModuleSpecifier": "relative" in settings.

I really don't like those endless "../../../../../" so I would like to fix them. The only "tool" I have for now - is just to delete the import, and resolve those imports manually - so it gives me the best import paths given my settings and my tsconfig's "baseUrl" or "paths".

This is tedious. And it doesn't work where I have used import * as foo from [..].

In VSCode - there is a command Organize imports (I think this comes not from TypeScript?) (In my optionion - wasted effort. since it doesn't organize them, it just sorts them, but this is besides the point (it does not come from TypeScript))

But TypeScript does come with a command "Typescript: Sort imports"!

What I would want - after executing the command, it would not only sort the imports, but also - change the paths for those imports matching my preferences of settings.json "typescript.preferences.importModuleSpecifier" + tsconfig.json "baseUrl" and "paths".

Or it could be a new command - Typescript: Organize imports? (maybe not..)

📃 Motivating Example

This feature would help automatically shorten imports / make the satisfy project setting for a file.

💻 Use Cases
  1. What do you want to use this for?
    To automatically organize imports
  2. What shortcomings exist with current approaches?
    You have to manually go over each import and edit them one by one
  3. What workarounds are you using in the meantime?
    Deleting the import and resolving them using quick fix.
主要言語
Go
スター
111k
フォーク
14.4k
平均マージ
1日 15時間
マージ済み PR(30日)
106

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/TypeScript のほかの issue

microsoft/TypeScript の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。