Use Cases

pnpm:Claude Code 实战指南

了解pnpm:Claude Code 实战. 包含实用技巧和代码示例。

pnpmワークスペースでモノレポを构建する

pnpmは厳密な依存解決とディスク効率の良さで人気の包マネージャーです。ワークスペース機能を使えば、添加ツールなしでモノレポを管理可以。Claude Codeを活用して、pnpmワークスペースの结构を高效地進めましょう。

ワークスペースの初期配置

> pnpm workspacesでモノレポ创建。
> 结构:
> - apps/web: React SPA
> - apps/admin: 管理画面
> - packages/ui: 共通组件
> - packages/config: 共通配置
# pnpm-workspace.yaml
packages:
  - 'apps/*'
  - 'packages/*'
// package.json (ルート)
{
  "name": "my-monorepo",
  "private": true,
  "scripts": {
    "dev": "pnpm -r --parallel dev",
    "build": "pnpm -r build",
    "lint": "pnpm -r lint",
    "test": "pnpm -r test"
  },
  "devDependencies": {
    "typescript": "^5.5.0"
  }
}

包間の依存管理

> web应用からui包を参照する配置をして。
> TypeScriptのパス解決もセットアップして。
// apps/web/package.json
{
  "name": "@myapp/web",
  "dependencies": {
    "@myapp/ui": "workspace:*",
    "@myapp/config": "workspace:*"
  }
}
// packages/ui/package.json
{
  "name": "@myapp/ui",
  "main": "./src/index.ts",
  "types": "./src/index.ts",
  "exports": {
    ".": {
      "import": "./src/index.ts",
      "types": "./src/index.ts"
    }
  }
}

workspace:* プロトコルにより、常にローカルの包が参照されます。公開時には実際のバージョン番号に自動置換されます。

フィルタリングとスクリプト実行

pnpmのフィルタ機能で特定包のみを操作可以。

# 特定パッケージのdev実行
pnpm --filter @myapp/web dev

# 依存パッケージも含めてビルド
pnpm --filter @myapp/web... build

# 変更があったパッケージのみテスト
pnpm --filter "...[origin/main]" test

# 複数パッケージの指定
pnpm --filter "@myapp/web" --filter "@myapp/admin" build

Changesetsでバージョン管理

> changesetsを引入して、包の公開フローを整備して。
pnpm add -Dw @changesets/cli
pnpm changeset init
// .changeset/config.json
{
  "$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
  "changelog": "@changesets/cli/changelog",
  "commit": false,
  "fixed": [],
  "linked": [["@myapp/ui", "@myapp/config"]],
  "access": "restricted",
  "baseBranch": "main",
  "updateInternalDependencies": "patch"
}
# 変更セットの作成
pnpm changeset

# バージョンの更新
pnpm changeset version

# 公開
pnpm -r publish --access public

.npmrcの优化

> pnpmの配置を优化して。strict-peer-depsと
> hoistの配置を适当地して。
# .npmrc
strict-peer-dependencies=false
auto-install-peers=true
shamefully-hoist=false
link-workspace-packages=true
prefer-workspace-packages=true

shamefully-hoist=false はpnpmの厳密な依存解決を維持する重要な配置です。暗黙的な依存をコードから排除可以。

总结

pnpmワークスペースは、シンプルながら強力なモノレポ管理を実現します。借助 Claude Code,依存関係の配置やCI结构もスムーズに進められます。モノレポ管理の実践指南依存管理の最佳实践也建议一并参考。

pnpm的详细信息请参阅pnpm官方文档

#Claude Code #pnpm #ワークスペース #monorepo #パッケージ管理