Closed43

Turborepo触る

tkrytkry
tkrytkry

グローバルインストールした方が良いらしい
グローバルな方は別にバージョン管理する必要もない?

tkrytkry

なんかわからんけどとりあえずpnpmをバージョンアップしつつ、turborepoをグローバルに入れておいた

tkrytkry
tkrytkry

基本構成のやつができた

>>> 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
tkrytkry

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

tkrytkry
tkrytkry

https://turborepo.com/docs/crafting-your-repository/structuring-a-repository#exports

exports をこのように使うことで、主に以下の3つの利点があります:

  1. バレルファイルを避けられる
    バレルファイルとは、同じパッケージ内の他のファイルを再エクスポートすることで、パッケージ全体に対して1つのエントリーポイントを作るファイルのことです。一見便利そうに見えますが、コンパイラやバンドラにとって扱いづらく、パフォーマンスの問題を引き起こしやすくなります。

  2. より強力な機能が使える
    exportsmain フィールドよりも強力な機能を持っており、たとえば条件付きエクスポート(Conditional Exports)などが利用できます。一般的に、よりモダンな選択肢であるため、可能な限り main よりも exports の使用が推奨されます。

  3. IDEの自動補完に対応できる
    exports を使ってパッケージのエントリーポイントを明示することで、コードエディタが自動補完機能を提供できるようになり、開発体験が向上します。

tkrytkry

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

tkrytkry

ベストプラクティス的には下記らしい
つまりdistを参照した方がいいって感じなのかーまあ一旦スルーでええか

パッケージのコンパイルには tsc を使う
内部パッケージ(Internal Packages) においては、可能な限り tsc(TypeScript コンパイラ)を使ってライブラリをコンパイルすることを推奨します。バンドラーを使うこともできますが、ビルドプロセスが複雑になるうえに、アプリ側で再度バンドルされる前にコードが変形されてしまい、デバッグが困難になることがあります。

tkrytkry

TypeScriptプロジェクト参照の使用は推奨しません。ワークスペースに新たな設定ポイントとキャッシュレイヤーを追加することになるためです。

なるほど、TSの機能は使わないんだ、そっちのほうが良さそう

tkrytkry
tkrytkry

dependsOnでアプリの前にlibがビルドされるようになるらしい

{
  "tasks": {
    "build": {
      "dependsOn": ["^build"] 
    }
  }
}
tkrytkry

マイクロシンタックス^により、Turborepo は依存関係グラフの一番下からタスクを実行するよう指示されます。

^が大事なのか

tkrytkry

$TURBO_DEFAULT$ってのも特殊な値なんだ マイクロシンタックスというらしい

このスクラップは4ヶ月前にクローズされました