Turborepo触る

学習パスがいろいろあるんだ


basicを試しに入れてみる

基本構成のやつができた
>>> Creating a new Turborepo with:
Application packages
- apps/docs
- apps/web
Library packages
- packages/eslint-config
- packages/typescript-config
- packages/ui
>>> Success! Created your Turborepo at my-turborepo
To get started:
- Change to the directory: cd my-turborepo
- Enable Remote Caching (recommended): pnpm dlx turbo login
- Learn more: https://turborepo.com/remote-cache
- Run commands with Turborepo:
- pnpm run build: Build all apps and packages
- pnpm run dev: Develop all apps and packages
- pnpm run lint: Lint all apps and packages
- Run a command twice to hit cache

間違ってターミナル消したらポートが使われたままになってしまった
ctr + cで止めるらしい

大変そう


exports
をこのように使うことで、主に以下の3つの利点があります:
-
バレルファイルを避けられる
バレルファイルとは、同じパッケージ内の他のファイルを再エクスポートすることで、パッケージ全体に対して1つのエントリーポイントを作るファイルのことです。一見便利そうに見えますが、コンパイラやバンドラにとって扱いづらく、パフォーマンスの問題を引き起こしやすくなります。 -
より強力な機能が使える
exports
はmain
フィールドよりも強力な機能を持っており、たとえば条件付きエクスポート(Conditional Exports)などが利用できます。一般的に、よりモダンな選択肢であるため、可能な限りmain
よりもexports
の使用が推奨されます。 -
IDEの自動補完に対応できる
exports
を使ってパッケージのエントリーポイントを明示することで、コードエディタが自動補完機能を提供できるようになり、開発体験が向上します。

バレル避けになるっぽいし良いな

こっち先に読むのが良いかな

基本の状態だとui/packages.jsonにはbuildコマンド生えてないな
別にdist参照させる必要ない気もする

ベストプラクティス的には下記らしい
つまりdistを参照した方がいいって感じなのかーまあ一旦スルーでええか
パッケージのコンパイルには tsc を使う
内部パッケージ(Internal Packages) においては、可能な限り tsc(TypeScript コンパイラ)を使ってライブラリをコンパイルすることを推奨します。バンドラーを使うこともできますが、ビルドプロセスが複雑になるうえに、アプリ側で再度バンドルされる前にコードが変形されてしまい、デバッグが困難になることがあります。

TypeScriptプロジェクト参照の使用は推奨しません。ワークスペースに新たな設定ポイントとキャッシュレイヤーを追加することになるためです。
なるほど、TSの機能は使わないんだ、そっちのほうが良さそう

tsのバージョンを混在させるのはめんどくさそう

External dependencyとInternal dependency という概念があるらしい

パッケージのバージョンを同期する方法は色々あるらしい
--recursiveがシンプルでわかりやすきがする、
pnpmのカタログってのでも良さそう

内部パッケージの作成、大事そう
簡単に設定できた

単一パッケージでもキャッシュや並列化で恩恵が受けられるという話

タスクが並列化されるぜえの図

満足したのでよし