dart-resolve-package-conflicts
`pub get` が互換性のないパッケージバージョンによって失敗した際に、バージョン競合を解消するためのワークフローです。パッケージのバージョン競合が発生したときに使用してください。
description の原文を見る
Workflow for fixing package version conflicts. Use this when `pub get` fails due to incompatible package versions.
SKILL.md 本文
Dart の依存関係を管理する
目次
基本的な概念
Dart は依存関係に対して厳密な単一バージョン規則を強制します: プロジェクトとそのすべての推移的依存関係は、与えられたパッケージの単一の共有バージョンに解決される必要があります。これはランタイムの型ミスマッチを防ぎますが、「バージョンロック」のリスクをもたらします。
バージョンロックを軽減するため、Dart は pubspec.yaml で固定されたバージョンではなくバージョン制約に依存しています。pubspec.lock ファイルは再現可能なビルドのために正確に解決されたバージョンを保持しています。
dart pub outdated の出力列を理解します:
- Current: 現在
pubspec.lockに記録されているバージョン。 - Upgradable:
pubspec.yamlの制約で許可される最新バージョン。dart pub upgradeはこれに解決されます。 - Resolvable: プロジェクト内の他のすべての依存関係を考慮したときに解決できる絶対的な最新バージョン。
- Latest: パッケージの最新の公開バージョン (プレリリースを除く)。
バージョン制約
- キャレット構文を使う:
pubspec.yamlの依存関係には常にキャレット構文 (例:^1.2.3) を使います。これにより、pubは解決中に新しい非互換性のないバージョン (次のメジャーバージョンまで、ただしそれを含まない) を選択できます。 - 開発依存関係を厳しくする:
dev_dependenciesの下限を現在使用している正確なバージョンに設定します。これは解決の複雑さを減らし、古い互換性のない開発ツールが選択されるのを防ぎます。 - CI でロックファイルを強制する: CI/CD パイプラインで
dart pub get --enforce-lockfileを使用して、ローカルでテストされた正確なバージョンが本番環境で使用されることを確認します。
ワークフロー: 依存関係の監査
このワークフローを定期的に実行して、安定性またはパフォーマンスに影響を与える可能性のある古いパッケージを特定します。
タスク進行状況:
-
dart pub outdatedを実行します。 - Upgradable 列を確認して、
pubspec.yamlを変更せずに更新できるパッケージを特定します。 - Resolvable 列を確認して、
pubspec.yamlの制約を変更して更新する必要があるパッケージを特定します。 - 撤回または廃止としてマークされたパッケージを特定します。
ワークフロー: 依存関係をアップグレードする
監査結果に基づいて条件付きロジックを使用して依存関係をアップグレードします。
タスク進行状況:
- 「Upgradable」バージョンに更新する場合:
-
dart pub upgradeを実行します。 -
dart pub upgrade --tightenを実行して、pubspec.yamlの下限を新しく解決されたバージョンと一致するように自動的に更新します。
-
- 「Resolvable」バージョンに更新する場合 (メジャー更新):
-
pubspec.yamlを手動で編集して、バージョン制約を「Resolvable」列と一致するようにバンプします (例:^0.11.0から^0.12.1に変更)。 -
dart pub upgradeを実行して新しい制約を解決し、pubspec.lockを更新します。
-
- フィードバックループ:
-
dart analyzeを実行 -> エラーを確認 -> API の重大な変更を修正。 -
dart testを実行 -> 失敗を確認 -> リグレッションを修正。
-
ワークフロー: バージョン競合を解決する
pub がすべての制約を満たす具体的なバージョンのセットを見つけられない場合、または撤回されたパッケージバージョンを扱う場合は、ロックファイルを綿密に操作します。
決してしないでください: pubspec.lock ファイル全体を削除して dart pub get を実行してください。これは依存関係グラフ全体でコントロールされていないアップグレードを引き起こします。
タスク進行状況:
-
pubspec.lockを開きます。 - 競合または撤回されたパッケージの特定の YAML ブロックを見つけます。
- ロックファイルからそのパッケージのエントリだけを削除します。
-
dart pub getを実行して、そのパッケージの最新の互換性のある非撤回バージョンをフェッチします。 - フィードバックループ:
-
dart pub depsを実行 -> 依存関係グラフが正しく解決されることを確認。 - 解決が失敗する場合は、ロックを引き起こしている推移的依存関係を特定し、
pubspec.yamlでその制約を更新して再試行します。
-
例
制約を厳しくする
dart pub outdated がパッケージがより高いマイナー/パッチバージョンに解決可能であることを示している場合、--tighten フラグを使用して pubspec.yaml を自動的に更新します。
入力 (pubspec.yaml):
dependencies:
http: ^0.13.0
コマンド:
dart pub upgrade --tighten http
出力 (pubspec.yaml):
dependencies:
http: ^0.13.5
綿密なロックファイル削除
package_a が撤回されているか競合でロックされている場合は、pubspec.lock からそのブロックだけを削除します。
前 (pubspec.lock):
packages:
package_a:
dependency: "direct main"
description:
name: package_a
url: "https://pub.dev"
source: hosted
version: "1.0.0" # 撤回されたバージョン
package_b:
dependency: "direct main"
# ...
アクション: package_a ブロック全体を削除します。package_b はそのままにします。dart pub get を実行します。
ライセンス: BSD-3-Clause(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- dart-lang
- リポジトリ
- dart-lang/skills
- ライセンス
- BSD-3-Clause
- 最終更新
- 不明
Source: https://github.com/dart-lang/skills / ライセンス: BSD-3-Clause
関連スキル
newsblur-cli
ターミナルからNewsBlurを管理できます。フィードの閲覧、ストーリーの検索、記事の保存・共有、インテリジェンス分類器の学習、新しいフィードの発見、ワークフローの自動化がNewsBlur CLIで実現します。ユーザーがNewsBlurアカウントを操作したい場合、フィードの確認、購読管理、またはニュース読み込みに関するスクリプト構築時に活用してください。
caveman-compress
自然言語のメモリファイル(CLAUDE.md、todos、preferences)を「原始人形式」に圧縮し、入力トークンを削減します。技術的な内容、コード、URL、構造はすべて保持したまま圧縮します。圧縮版が元のファイルを上書きし、人間が読める形のバックアップはFILE.original.mdとして保存されます。トリガー:/caveman-compress FILEPATH または「compress memory file」
find-skills
日本語の意図から Agent Skills を発見する。「楽天SEOのスキル探して」「PDFを処理したい」「データ分析を自動化したい」などの日本語リクエストに対応。Claude Code (CLI)、Codex、Gemini CLI、claude.ai (Web) いずれでも動作。日本最大の Agent Skills データベース「Agent Skills by ALSEL」(11,000件超、全件日本語化、ダウンロード可能スキル8,600件超) から、ユーザーの意図に合うスキルを推薦・インストール案内する。
planning-and-task-breakdown
仕事を順序立てたタスクに分割します。仕様書や要件が明確にあり、実装可能なタスクに分解する必要がある場合に利用してください。タスクが大きすぎて着手しづらい場合、スコープを見積もる必要がある場合、または並列で作業を進められる場合に活用できます。
docx
このスキルは、ユーザーがWord文書(.docxファイル)を作成、読み込み、編集、操作したいときに使用します。以下の場合に実行してください:「Word文書」「.docx」などの記述、または目次・見出し・ページ番号・レターヘッドなどのフォーマットを含む専門的な文書の作成リクエスト。また、.docxファイルのコンテンツ抽出・再編成、文書への画像挿入・置換、Word形式での検索置換、変更履歴やコメント機能の使用、コンテンツを整形したWord文書への変換の場合も対象です。ユーザーが「レポート」「メモ」「手紙」「テンプレート」などの成果物をWord形式または.docxファイルで求める場合はこのスキルを使用してください。PDF、スプレッドシート、Google Docs、文書作成と無関係なコーディングタスクには使用しないでください。
idea-refine
アイデアを反復的に改善します。構造化された発散的思考と収束的思考を通じて、アイデアを洗練させることができます。「idea-refine」または「ideate」を使用してトリガーします。