shadcn/uiでlib/utilsが見つからない
https://gyazo.com/e2cb4b832e82692e96d1d6410bb6d432
just-in-time-packagesのところに書いてあることかな?
No TypeScript paths: A library that is being transpiled by its consumer cannot use the compilerOptions.paths configuration because TypeScript assumes that source code is being transpiled in the package where it is written. If you're using Typescript 5.4 or later, we recommend using Node.js subpath imports.
typescriptはソースが書いてあるパッケージ内でtranspileされることを期待しているから、compilerOptions.pathsで設定されたものを解決できないからエラーになるみたい。 代わりにsubpath importsで読み込めば良いって書いてある。
ただsubpathだと@じゃなくて#使わないといけないっぽい?
subpath importsに変えたらできたけどこれ@/みたいにすぐslashで始められない#depとか何かつけないと怒られる
https://gyazo.com/9e5ffb76b30d62ddd8ba709e6d646574
こんな感じで設定したらできた
package.json
https://gyazo.com/b5276711d0a81b6e95a70d34a0025332
tsconfig.json
https://gyazo.com/2197bb0bc2e2b5c78b6e682823876eec
according.tsx
https://gyazo.com/a78505068835f4d77adaf9e025cdaa93
src全て#depsにすると@と競合するかなって思ったけど別にできなくはないみたい。
ただわかりづらいしどっちかに統合した方が良さそう。
shadcn/uiで使う時のcomponents.jsonに関しても#*でやってれば#componentsで指定するとちゃんと配置してくれる。 compilorOptions.pathsで"#*": ["./src/*"]って指定すると#componentsとかでアクセスできるから@なくてもなんとかなる。
別のリポジトリで解決したいものだけdepsみたいなのつけておくとわかりやすい気もするし
code:package.json
"imports": {
"#deps/lib/*": "./src/lib/*.ts"
},
libだけ#deps/libって形に変えた。
別に#libでも動くんだけど、importsで明記してた方がわかりやすい?
と思ったけど#typesってなってるのをnextjs側で解決できてなさそうなのでimportsに明記した方が良さそう?
わからんけど。
ちなみにこのリポジトリだと、nextjsのtsconfigにcompilerOptions.pathsで設定している @uiでpackageのsourceを解決するように設定しているみたい。↓
turboのコメントでも同じようなこと書いている。