キーポイント
composer global require
composer require
、またはバイナリファイルを使用して独自のローカルプロジェクトにインストールすることです。ただし、これは複雑さと退屈さを追加することができます。グローバルコマンドへの推奨される変更は、「グローバル」であるが孤立したプロジェクトが特定の場所にインストールされ、ベンダーとビンディレクトリが通常の場所に表示される場合があります。 $PATH
を使用して提唱してきました。それから、ある日、私はこの議論に出会いました。 composer global require
要するに、ほとんどの人は、グローバルにインストールされたパッケージに依存関係がない限り、グローバルな要求は悪い練習であると考えているようです。技術的には、これはすべてのプロジェクトに単一の環境を使用するときに理にかなっていますが、その議論でコメントしたように、各プロジェクトが仮想マシンまたはDockerのような適切に孤立した環境を使用する場合、この問題は無関係であり、全体的な状況は実際にはありませんダメージを引き起こします。
opです
別の方法として、ユーザーは
を使用して各コマンドラインツールを独自のローカルプロジェクトにインストールし、またはバイナリファイルを手動で管理する必要があります(たとえば、binディレクトリから既に存在することにより、シンボリックリンクを作成する必要があります)。
composer require
$PATH
私にとって、これはまったく受け入れられない合併症です。作曲家は、使いやすく、パッケージ管理の初心者に優しいものになるため、常にPHPの誇りでした。シンボルリンクを周囲に作成する必要があります(特に、Windowsのような非シンリンクのオペレーティングシステムを考慮すると)。次に、OPはさらに、グローバルコマンドがどのように機能するかを変更することを示唆しています:$PATH
「グローバル」が孤立したプロジェクトは、そのベンダーとビンディレクトリに通常の場所に表示され、ディレクトリの内容を
完全に同意します。グローバルにインストールされた各コンポーザーを独自の検疫ディレクトリにインストールし、他のグローバルにインストールされているパッケージと潜在的に矛盾するのではなく、独自の検疫依存関係を持つことができるのは驚くべきことです。~/.composer/global/[something]
でミラーリングできます(Symlinkを通じて) 、またはより良いオプションは~/.composer/global/[something]/bin
である場合があります。文字列は、さまざまな方法で選択できます。~/.composer/vendor/bin
~/.composer/bin
[something]
私はこのアプローチに完全に同意します、それは両方の世界の中で最高のようです。明らかに、これはいくつかの後方互換性の問題を引き起こす可能性がありますが、それは作曲家のバージョン2.0で発生しないという意味ではありません。 Taylor Otwellは、以下のこの見解にさらに応答します:org/project
~/.composer/global/org/project/vendor/org/project
この後、The True Open Source Spiritで、OPは代替グローバル実装を別のツールに構築します:Cgr。それがどのように機能するか見てみましょう。
が必要です ホームステッドの改善されたインスタンスで次のすべてのコマンドを実行しますCGRを開始するには、グローバルパッケージとしてインストールします。 作曲家のビンフォルダーがパス変数にない場合は、CGR - Composer Globalには代替
上記のコマンドは、ComposerのGlobal Bin Directoryのパスを使用して
環境変数を拡張します(Homesteadのデフォルトの場所が改善されました - 場所は異なる場合があります)。 2番目のコマンドは、CGRが使用するBINディレクトリを構成し、3番目のコマンドはこれらの変更をロードします。また、これらは、端子インターフェイスがそのユーザーとして実行されるたびに自動的にロードされます(私の場合は、Viveviveを使用して)。
その後、CGRにアクセスしてcomposer global require consolidation/cgrログイン後にコピーログイン後にコピーを実行できます。これにより、Composerの一般的なヘルプファイルが出力されます。
グローバルコンポーザーパッケージを適切にインストールしますecho "export PATH=$PATH:$HOME/.composer/vendor/bin/" >> ~/.bashrc echo "export CGR_BIN_DIR=$HOME/.composer/vendor/bin" >> ~/.bashrc source ~/.bashrcログイン後にコピーHomesteadが改善された場合、有用なエイリアスが構成されています。このエイリアスは、
をインストールするときに非常に便利なため、ルートフォルダーから実行できます。 PHPunitのグローバルインストールをテストするには、最初にこのエイリアスを削除する必要があり(対応するラインに$PATH
タイピングがvagrant ssh
に拡張されます。これは、各プロジェクトににコメントします)、シェルを終了して再入力して、エイリアスがリロードされるようにします。次に、バージョン出力を使用してPHPunitのこの新しいグローバルインストールを実行すると、次のようなものが生成されるはずです。
2つの互換性のないパッケージをインストールしてみましょう。cgr
もちろん、それらはすべて正常にインストールできます。彼らが働いているかどうかを確認しましょう。cgr phpunit/phpunitログイン後にコピーcomposer global require consolidation/cgrログイン後にコピーログイン後にコピーすべてがうまくいきます!依存関係の不一致のために以前に矛盾していたグローバルパッケージは、今では並んで共存し、問題なくオペレーティングシステム全体で使用できるようになりました!
このツールは何をすべきか/できないものは何ですか?
場合によっては、Composerプラグインをインストールする場合があります。制限セクションで述べたように、これらのプラグインは、各グローバルパッケージを独自のフォルダーにインストールし、独自の依存関係ツリーを持っているため、すべてのグローバルプロジェクトでグローバルに利用できません。したがって、Composerの共通の動作を変更するプラグインをインストールする場合は、CGRの代わりに
composer global require
を使用する必要があります。たとえば、CGR自体はそのようなプラグインです。次は何ですか?
テスト、テスト、テスト! Global Reackコマンドの頻繁なユーザーである場合、この新しいツールをテストし、グローバルなニーズを満たしている金額と改善があるかどうかについてのフィードバックを与えることを強くお勧めします。
このツールは現在、概念の証明のみであり、実装が名前が変更され、再パッケージ化され、最終的には作曲家のコアに統合されている場合があることに注意してください。言い換えれば、できる限り使用しますが、当面は過度に依存しないでください。
グローバルパッケージがインストールされている間、
作曲家グローバルに関するFAQはcomposer global require
についてどう思うか教えてください。多くの人が今考えているのと同じくらい有害ですか?それとも、それは慎重であり、孤立した開発環境を持っているだけの問題ですか?ほかに何か?以下にコメントを表明してください!です
作曲家のグローバルな要件を使用することが有害と見なされるのはなぜですか?作曲家のグローバルな要件は、依存関係の競合につながる可能性があるため、有害と見なされます。パッケージをグローバルにインストールすると、それらはすべて同じスペースを共有します。つまり、同じ依存関係のセットを共有します。 2つのパッケージに同じ依存関係の異なるバージョンが必要な場合、競合やエラーにつながる可能性があります。このような問題を回避するために、各プロジェクトの独自の依存関係セットをインストールすることをお勧めします。
Composer Globalの代替手段は何ですか?
Composerのグローバル要件を使用しないでください。必要な各ツールに新しいComposerプロジェクトを作成できます。これにより、各ツールには独自の依存関係があり、競合のリスクが低下します。また、CGRなどのツールを使用して、各パッケージに分離されたインストールを作成し、グローバルな依存関係の問題を回避できます。
CGRグローバルな依存関係の問題を回避するにはどうすればよいですか?
CGR(Composer Global Reams)は、各パッケージに孤立したインストールを作成するためのツールです。これは、各パッケージとその依存関係が独自の個別のディレクトリにインストールされ、異なるパッケージの依存関係間の競合のリスクを回避することを意味します。これにより、Composer Global Reamsを使用するためのより安全な代替手段になります。
CGRのインストールと使用方法は?
cgrをインストールするには、コマンド
composer global require consolidation/cgr
を使用できます。インストール後、CGRを使用して、Composerのグローバル要件を使用できます。たとえば、パッケージをインストールするには、コマンドcgr require package-name
を使用できます。作曲家のローカルインストールとグローバルインストールの違いは何ですか?
作曲家では、ローカルインストールとは、パッケージとその依存関係がプロジェクトのディレクトリにインストールされていることを意味します。これは、依存関係の競合を回避するため、パッケージをインストールする推奨方法です。一方、グローバルインストールは、グローバルディレクトリにパッケージとその依存関係をインストールします。これにより、異なるパッケージに同じ依存関係の異なるバージョンが必要な場合、競合につながる可能性があります。
作曲家のグローバル依存関係を管理する方法は?
作曲家のグローバル依存関係を管理することは、紛争のリスクがあるため困難な場合があります。ただし、CGRのようなツールは、各パッケージの孤立したインストールを作成することで役立ちます。また、必要なツールごとに新しいコンポーザープロジェクトを作成し、各ツールに独自の依存関係セットがあることを確認することで、グローバル依存関係を管理することもできます。
作曲家にローカルとグローバルの両方のインストールを使用できますか?
はい、Composerでローカルとグローバルの両方のインストールを使用できます。ただし、依存関係の競合を回避するために、可能な場合はローカルインストールを使用することをお勧めします。グローバルにパッケージを使用する必要がある場合は、CGRなどのツールを使用して孤立したインストールを作成することを検討してください。
作曲家の依存関係を誤って管理するリスクは何ですか?
作曲家の依存関係を誤って管理すると、競合やエラーにつながる可能性があります。 2つのパッケージが異なるバージョンの同じ依存関係を必要とする場合、問題のデバッグが困難になる可能性があります。また、依存関係の異なるバージョンが異なる機能と動作を持つ可能性があるため、アプリケーションの予期しない動作を引き起こす可能性があります。
作曲家の依存関係の競合を解決する方法は?
Composerの依存関係の競合を解決するには、競合が解決する可能性があるため、パッケージを最新バージョンに更新しようとすることができます。これがうまくいかない場合は、使用しているパッケージを再考し、矛盾する依存関係がない代替品を見つけたいかもしれません。 CGRのようなツールは、各パッケージの孤立したインストールを作成することでも役立ちます。
作曲家の依存関係を最新に保つにはどうすればよいですか?
作曲家の依存関係を最新の状態に保つには、
composer update
コマンドを使用できます。これにより、composer.json
ファイルで指定されたバージョンの制約に基づいて、すべてのパッケージが最新バージョンに更新されます。また、新しいバージョンで使用できるパッケージを確認することもできます。composer outdated
以上が作曲家グローバルは有害と見なされる必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。