検索
ホームページ開発ツールcomposer知っておく必要がある Composer バージョンの制約

知っておく必要がある Composer バージョンの制約

コンポーザーをまだ知らない場合は、コンポーザーの使用方法のチュートリアル##を参照してください。 #コラムを読んで読み始めてください。

私は、多くの人が、使用するコンポーザー パッケージ間の依存関係の制約に苦労しているのを見てきました。この記事がいくつかの問題の原因を指摘し、それらを回避する方法を提供することを願っています。最悪のシナリオから始めて、制約を段階的に改善していきます。

全能のアスタリスク:

#Composer には依存関係パーサーがあるので、必要なものを自動的に見つけてくれますよね。間違っている。

* を使用してバージョン制約を宣言することは、おそらく最悪のプラクティスの 1 つです。なぜなら、自分が何を得るかを完全にコントロールできないからです。 minimum-stability およびその他の制約に一致する任意のバージョンにすることができます。

あなたは基本的に Composer とロシアン ルーレット ゲームをプレイしていることになりますが、最終的には害を及ぼすことになります。そうなると、あなたを失望させたのはツールのせいかもしれません。

引き続き不注意な場合は、少なくとも

dev-master というラベルが付いている最新の開発バージョンを信頼してください。

ハードコードされたブランチ名

つまり、現在

dev-master を使用していることになります。問題は、dev-master が指すコードが変更される可能性があることです。少なくとも、得られるものは常に不安定なパッケージです (composer によって表される安定性フラグによれば不安定です)。ただし、より大きな問題は、dev-master の意味がいつでも変更される可能性があることです。

たとえば、これは最新の 1.0 開発バージョンを表します。開発者がバージョン 1.1 の開発を開始すると言うと、ブランチ名

dev-master は 1.0 ブランチを指すのではなく、最新の 1.1 開発ブランチを指すようになります。

このライブラリの開発を綿密にフォローしない限り、

composer update コマンドを実行するまで問題が発生し、一日が台無しになってしまうでしょう。したがって、ブランチ名を直接参照することは持続可能な解決策ではありません。幸いなことに、エイリアスに関しては composer が役に立ちます。

ブランチ エイリアス

ブランチ エイリアスは、パッケージ管理者が

composer.json に入力できる属性で、これらのブランチ名をバージョンにマッピングできるようにします。 。

1.0、2.1 などのブランチ名は必要ありません。

Composer はこれらをすでに処理しています。

ただし、

master のようなブランチ名は、dev-master という名前のバージョンを生成するため、これにエイリアスを付ける必要があります。 Composer ドキュメントにはエイリアスに関する優れた記事があり、ブランチ エイリアスを定義する方法を説明しています。

{
    "extra": {
        "branch-alias": {
            "dev-master": "1.0.x-dev"
        }
    }
}

dev-master バージョンは にマップされます。 1.0.x-dev

のエイリアスでは、これは基本的に、

1.0.*@dev 制約を持つパッケージを要求できることを意味します。この利点は、1.0 の意味が定義され、変更されないことです。また、安定版リリースへの切り替えも容易になります。

ブランチ エイリアスの警告には、パッケージ管理者が警告を追加する必要があります。ブランチ エイリアスのないライブラリを使用している場合は、上記の

extra セクションを combos.json に追加してプル リクエストを送信します。

安定バージョン

1.0.*@dev この制約はすでに非常に優れています。しかし問題は、今のところ安定したバージョンがまだ存在しないことです。まだ不安定なバージョンを実行しているという事実以外、コードには何も問題はありません。

ただし、他の人のプロジェクトがあなたのパッケージに依存している場合、ユーザーは明示的に @dev フラグを使用して Composer が不安定なバージョンをインストールできるようにするか、単にプロジェクトの minimum-stability Level を下げる必要があります。 、つまり、すべての依存パッケージの不安定なバージョンが入手されることになります。

開発バージョンの不安定性を回避する最善の方法は、開発バージョンにリリース タグを付けることです (安定バージョンのリリースを指します)。 release のタグが付いていないライブラリを使用している場合は、タグが付けられるまでメンテナに警告してください。今やれ!

Composer コミュニティのメンバーとして、私たちは責任を負わなければなりません。安定したバージョンをリリースし、CHANGELOG (変更ログ) を維持する必要があります。それは簡単ではありませんが、エコシステム全体に大きな変化をもたらすでしょう。真実かつ意味的に物事にラベルを付けることを忘れないでください。

安定バージョンをリリースするときは、 @dev 識別子を削除し、制約を 1.0.* に変更できます。

次のメジャー バージョン

依存するパッケージのすべてのリリース ノードがセマンティック バージョニングのルールに準拠し、厳密に下位互換性がある場合は、段階的に制約を増やす。

現在 1.0.* バージョンには潜在的な互換性の問題があり、 1.1 バージョンが間もなくリリースされます。制約が 1.0 であるが、他の人が 1.1 バージョンの新機能を必要とする場合 (下位互換性を覚えていますか?)、その人は 1.1 バージョンをインストールできません。 。したがって、制約を 1.* のように書き直す必要があります。

すばらしいですね。 1.1 バージョンの新機能に依存しない限り、制約を変更する必要はなく、引き続き 1.0 このバージョンと一致します。新しい機能はありません。

次に、制約を >=1.1, に変更しますが、この書き方はさらに面倒です。チルダ演算子を使用すると、上記の式を <code> ~1.1 のように簡潔に表現できます。これは、1.1 より上のすべての 1.* バージョンを意味します。これで、セマンティック バージョンではチルダ演算子を使用し、パッケージの互換性を最大化することが推奨されることがわかりました。

TLDR

ブランチエイリアス を使用します。

発行の信頼性とセマンティックを高めるために、発行にラベルを付けます。

~ 演算子を使用します。

以上が知っておく必要がある Composer バージョンの制約の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はlearnkuで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
作曲家は何をしていますか?作曲家は何をしていますか?Apr 08, 2025 am 12:19 AM

Composerは、PHPの依存関係管理ツールであり、プロジェクトの依存関係を宣言、ダウンロード、管理するために使用されます。 1)Composer.jsonファイルを介して依存関係を宣言します。2)ComposerInstallコマンドを使用して依存関係をインストールし、3)依存関係ツリーを解析し、Packagistからダウンロードします。4)Autoload.phpファイルを生成して自動荷重を簡素化します。

App Composerとは何ですか?App Composerとは何ですか?Apr 07, 2025 am 12:07 AM

AppComposerは、アプリケーションを構築および管理するためのツールです。 1)事前定義されたコンポーネントをドラッグして構成することにより、アプリケーションの開発を簡素化し、効率を向上させます。 2)開発者は、コンポーネントを定義し、インターフェイスを組み合わせ、ビジネスロジックを定義し、最終的にアプリケーションをレンダリングできます。 3)タスク管理や条件付きレンダリングなど、基本的および高度な使用法をサポートし、柔軟なアプリケーションの構築に役立ちます。

作曲家は何に使用されていますか?作曲家は何に使用されていますか?Apr 06, 2025 am 12:02 AM

作曲家は、PHPの依存関係管理ツールです。 Composerを使用するコアステップは次のとおりです。1)「Stripe/Stripe-PHP」などのComposer.jsonの依存関係を宣言:「^7.0」; 2)ComposerInStallを実行して、依存関係をダウンロードおよび構成します。 3)Composer.LockおよびAutoload.phpを介してバージョンとオートロードを管理します。 Composerは依存関係管理を簡素化し、プロジェクトの効率と保守性を向上させます。

作曲家AIとは何ですか?作曲家AIとは何ですか?Apr 05, 2025 am 12:13 AM

Composeraiは、開発効率と品質を改善するためにコードを生成および最適化するための人工知能ベースのツールです。その機能には次のものが含まれます。1。コード生成:要件に応じて標準を満たすコードスニペットを生成します。 2。コード最適化:既存のコードを分析することにより、最適化の提案を行います。 3。自動テスト:テストケースを生成して、コードの品質を確保します。

AndroidのComposerとは何ですか?AndroidのComposerとは何ですか?Apr 04, 2025 am 12:18 AM

ComposerはAndroidのSurfaceFlingerサービスの一部であり、最終的なディスプレイバッファーに複数のグラフィックスレイヤーを合成する責任があります。 1)グラフィックレイヤーを収集し、2)グラフィックレイヤーを並べ替え、3)グラフィックレイヤーを合成し、4)ディスプレイデバイスへの出力を使用して、アプリケーションのパフォーマンスとユーザーエクスペリエンスを向上させます。

作曲家の定義は何ですか?作曲家の定義は何ですか?Apr 03, 2025 am 12:17 AM

作曲家は、音楽を作り、感情を表現し、物語を語り、音楽を通してアイデアを伝える人々です。作曲家の作品には次のものが含まれます。1。概念:作品のテーマとスタイルを決定します。 2。作成:メロディーとハーモニーを作曲して、予備的な音楽構造を形成します。 3。実験:機器またはソフトウェアを介した作業のオーディションと調整。 4。改善:満足するまで、オーディションの結果に従って変更および改善します。

作曲家とオーケストレーターの違いは何ですか?作曲家とオーケストレーターの違いは何ですか?Apr 02, 2025 pm 02:49 PM

作曲家はPHPプロジェクトの依存関係を管理するために使用されますが、オーケストレーターはマイクロサービスまたはコンテナ化されたアプリケーションを管理および調整するために使用されます。 1.Composer.jsonファイルを介してPHPプロジェクトの依存関係を宣言および管理します。 2。Orchestratorは、構成ファイル(KubernetesのYAMLファイルなど)を介してサービスの展開と拡張を管理し、高可用性と負荷分散を確保します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい