@/ エイリアスは三箇所に設定する。どれが欠けても壊れる
深い相対 import を全廃した代償は、エイリアスを三箇所で設定することです。一つ欠けると、エディタのエラー・ビルド失敗・スタイルの静かな消失という別々の症状になります。
../../.. を禁止するのは言うのは簡単ですが、三つのツールチェーンすべてで成立させるのは難しい作業です。このサイトは @/ を src に向け、設定は三箇所に分かれています。
それぞれの担当
astro.config.mjsのvite.resolve.alias:バンドルと dev のモジュール解決。tsconfig.jsonのpaths:エディタの補完とastro checkの型解決。- SCSS の
loadPaths:スタイル内@useのパス解決。
三つは独立した解決経路で、互いの設定を読みません。
一つ欠けたときの症状
Vite だけ:エディタで @/components/X.astro が赤くなるがビルドは通ります。tsconfig だけ:エディタは快適でビルドがモジュールを見つけられません。loadPaths が無い:スタイルの @use が File not found になります。
三つの症状は同じ原因には見えないので、ここは記憶より表のほうが確実です。
スタイルで @/ を書かない理由
SCSS の @use は Vite のエイリアスを通らず、loadPaths しか見ません。したがってスタイル内はルート相対で書きます。
@use 'styles/settings/tokens';
@/ と同じ目的地を別のツールチェーン向けに書いたもので、互いの代わりにはなりません。
相対パスが必須の二箇所
import.meta.glob はビルド時の静的解析で、リテラルのパスが必要です。エイリアスは効かず、パターンを変数にもできません。そのため lib/registry.ts と lib/mount.ts のレジストリが唯一の相対パスで、これはフレームワークの制約であって手抜きではありません。
得られるもの
ファイルを移動しても import を直さずに済み、@/ は外部パッケージと即座に見分けられ、階層の深さが読みやすさに影響しなくなります。代償はこの三箇所を同時に更新する必要があることです。

コメント
…