## 背景
以下のようなディレクトリ構造があるとする。
```ls
.
└── src
├── client
│ └── client.ts
└── main.ts
```
`src/main.ts`では以下のようなimport文がある。
```ts:src/main.ts
import * from "./client/client"
```
たとえ`client.ts`のパスに変化がなくても、`main.ts`のパスに変化があると相対パスが変わってしまい、importできなくなる。これを解決したい。
## 解決策
[[TSConfig]]で[[baseUrl (tsconfig)|baseUrl]]と[[paths (tsconfig)|paths]]を指定する。
```json:tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"~/*": ["./*"],
}
}
}
```
どのファイルでも`~`は`./src`として扱われるため以下のように書ける。
```ts:src/main.ts
import * from "~/client/client"
```
`client.ts`のパスが変わらない限り、別ファイルのimport文が失敗することはない。