
Alexander CogneauのComposerとの依存関係管理の紹介に続きます
、あなたは今、Composerが外部のプロジェクトの依存関係とバージョン制約を管理するためのリゾルバーであることを知っています。しかし、それはすべてですか?この記事では、作曲家を基本的なビルドオートメーションツールとして使用する方法を紹介します。
キーテイクアウト
- 作曲家は、外部プロジェクトの依存関係とバージョン制約を管理するためのリゾルバーであることとは別に、基本的なビルドオートメーションツールとしても使用できます。それはpre
を公開します
- およびpost
- 実行中にイベントフックをインストール/更新/アンインストールします。これは、さまざまな自動タスク用にスクリプト化できます。
作曲家スクリプト
塩に値するビルドオートメーションツールは、建物、パッケージング、ランニングからステージングおよび生産システムの展開まで、さまざまな自動タスクをスクリプト化する機能を提供する必要があります。たとえば、PhingはANTに基づいており、XMLビルドファイルでこのようなタスクを定義することができます。
この点で、作曲家は、これらのタスクが何であるかについて、またはそれらがまったく実行されるべきかについて仮定しないという点で異なります。代わりに、作曲家が行うことは、実行中にインストール前と更新後/更新/アンインストールイベントフックを公開することです。これは、「スクリプト」を使用してコールバックを使用できます。 - インストール、アップグレード、およびアンインストールコマンドのオプションをプギンにします。
スクリプトプロパティは、ルートパッケージのcomposer.jsonのルートjsonオブジェクトで定義されています
ファイル。任意の数のPHP静的メソッド(Composerのオートローダーメカニズムによって自動装着可能でなければなりません)、コマンドライン実行可能ファイル、または両方の組み合わせを定義できます。
これらのスクリプトで定義されたカスタムコードまたはパッケージ固有のコマンドは、Composerの実行プロセス中に呼び出されます。警告は、ルートパッケージのcomposer.jsonで定義されているスクリプトのみが実行されることです。 Composerは、ルートパッケージの依存関係で指定されたスクリプトを実行しません。
次のイベントは、作曲家の実行プロセス中に起動されます。
プリインストールCMD - インストールコマンドが実行される前に発生します-
ポストインストールCMD - インストールコマンドが実行された後に発生します-
pre-update-cmd - 更新コマンドが実行される前に発生します-
post-update-cmd - 更新コマンドが実行された後に発生します-
PRE-PACKAGE-INSTALL - パッケージがインストールされる前に発生します-
ポストパッケージインストール - パッケージがインストールされた後に発生します-
Pre-Package-Update - パッケージが更新される前に発生します-
ポストパッケージアップデート - パッケージが更新された後に発生します-
Pre-Package-uninstall - パッケージがアンインストールされる前に発生します-
Pastage-uninstall - パッケージがアンインストールされた後に発生します-
これらはかなり自明であり、美しさはそのシンプルさにあることに同意すると思います。しかし、説明するために、ここにルートパッケージComposer.jsonの例があります:
<span>{
</span> <span>"name": "MyProject",
</span> <span>"description": "An example to demonstrate the use of Composer scripts",
</span> <span>"version": "1.0.0",
</span> <span>"require": {
</span> <span>"php": ">=5.3",
</span> <span>"ext-xsl": "*",
</span> <span>"ext-imap": "*",
</span> <span>"ext-gd": "*"
</span> <span>},
</span>
<span>"autoload": {
</span> <span>"psr-0": {
</span> <span>"MyProject": "src/"
</span> <span>}
</span> <span>},
</span>
<span>"scripts": {
</span> <span>"pre-install-cmd": "MyProject\Installer::preInstall",
</span> <span>"post-install-cmd": [
</span> <span>"MyProject\Installer::postInstall"
</span> <span>],
</span> <span>"post-package-install": [
</span> <span>"MyProject\Installer::postPackageInstall",
</span> <span>"phpunit -c /tests",
</span> <span>"./bin/install.sh"
</span> <span>]
</span> <span>}
</span><span>}</span>
ログイン後にコピー
プリインストールCMD、ポストインストールCMD、およびポストパッケージインストールイベントのスクリプトを定義しました。ご覧のとおり、静的PHPメソッドとコマンドライン実行可能ファイルの任意の組み合わせを定義できます。ポストパッケージインストールイベントの場合、いくつかのユニットテストとカスタムインストールスクリプトも実行します。
これが私たちの例のスクリプトのように見えるものです:
<span><span><?php
</span></span><span><span>namespace MyProject;
</span></span><span><span>use ComposerScriptEvent;
</span></span><span>
</span><span><span>class Installer
</span></span><span><span>{
</span></span><span> <span>public static function preInstall(Event $event) {
</span></span><span> <span>// provides access to the current ComposerIOConsoleIO
</span></span><span> <span>// stream for terminal input/output
</span></span><span> <span>$io = $event->getIO();
</span></span><span> <span>if ($io->askConfirmation("Are you sure you want to proceed? ", false)) {
</span></span><span> <span>// ok, continue on to composer install
</span></span><span> <span>return true;
</span></span><span> <span>}
</span></span><span> <span>// exit composer and terminate installation process
</span></span><span> <span>exit;
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public static function postInstall(Event $event) {
</span></span><span> <span>// provides access to the current Composer instance
</span></span><span> <span>$composer = $event->getComposer();
</span></span><span> <span>// run any post install tasks here
</span></span><span> <span>}
</span></span><span>
</span><span> <span>public static function postPackageInstall(Event $event) {
</span></span><span> <span>$installedPackage = $event->getComposer()->getPackage();
</span></span><span> <span>// any tasks to run after the package is installed?
</span></span><span> <span>}
</span></span><span><span>}</span></span>
ログイン後にコピー
これらの各イベントが起動されると、Composerの内部イベントハンドラーは、各コールバックに対する最初の(およびおよび唯一の)引数としてComposerScriptEventオブジェクトを渡します。イベント
オブジェクトは、他の作曲家オブジェクトの次のゲッターをコールバックに公開します。
- getComposer() - composercomposerの現在のインスタンスを返します
- getName() - 解雇されているイベントの名前を返します
- getio() - コンソールへの読み取り/書き込みのためにComposerioIoInterfaceを実装する現在の入力/出力ストリームを返します
各メソッドシグネチャの各オブジェクトが公開する他のメソッド(特にComposerインスタンスとIOインターフェイス)のComposer APIドキュメントを参照できます。
この一見初歩的な実装は、フィングの定義ほど「強力」ではないかもしれませんが、そのシンプルさは信じられないほどの柔軟性を否定しています。 PHPへの既存の知識投資を活用しており、少し創造性と想像力で、Composerの依存関係リゾルバーとネイティブPHPスクリプトを使用して、かなり複雑なビルドとテイクダウンタスクを作成できます。継続的な統合のためにこれをJenkinsに統合することもできます。
要約
この記事では、作曲家のスクリプトを使用してビルドオートメーションを実行する方法の初歩的な例を紹介しました。これらのタスクは、PHPへの既存の知識投資を活用するため、必要なものと同じくらい単純または複雑です。 そして、うまくいけば、この記事が、単なる依存関係以上のものであるために作曲家を使用するように促します。 Composer Scriptsの使用方法の詳細については、getComposer.org/doc/articles/scripts.mdを参照してください。
Fotoliaを介した画像
作曲家スクリプトを使用した自動化のビルドに関するよくある質問(FAQ)
PHP開発における作曲家の主な機能は何ですか?
作曲家はPHPの依存関係管理ツールです。これにより、プロジェクトが依存しているライブラリを宣言することができ、それらを管理(インストール/更新)します。作曲家は、YumやAPTと同じ意味でパッケージマネージャーではありません。はい、それは「パッケージ」またはライブラリを扱いますが、プロジェクトごとにそれらを管理し、プロジェクト内のディレクトリ(ベンダーなど)にインストールします。
作曲家のスクリプトを使用してタスクを自動化するにはどうすればよいですか?
Composerスクリプトは、PHP開発のタスクを自動化する方法です。それらはComposer.jsonファイルで定義されており、「Composer RunScript」コマンドを使用してコマンドラインから実行できます。スクリプトを使用して、テスト、構築、展開などのタスクを自動化できます。また、カスタムPHPコードを実行するためにも使用できます。
テストにはコンポーザースクリプトを使用できますか?テストを実行するComposer.jsonファイルにスクリプトを定義できます。たとえば、phpunitを実行する「テスト」というスクリプトを定義できます。次に、「Composer RunScriptテスト」コマンドを使用してコマンドラインからテストを実行できます。アプリケーションを展開するために必要な手順を実行するcomposer.jsonファイルにスクリプトを定義することにより。これには、アセットのコンパイル、コードの最適化、ファイルのアップロードなどのタスクが含まれます。スクリプトが定義されたら、「Composer runscript」コマンドを使用してコマンドラインから実行できます。カスタムPHPコード。 PHPファイルを実行するcomposer.jsonファイルにスクリプトを定義できます。 PHPファイルには、必要なコードを含めることができます。 「Composer runscript」コマンドを使用してスクリプトを実行すると、PHPコードが実行されます。
作曲家のスクリプトを作成するにはどうすればよいですか? .jsonファイル。各スクリプトはキー値ペアとして定義され、キーはスクリプトの名前であり、値は実行するコマンドです。 composer.jsonファイルを編集して、スクリプトを追加、変更、または削除できます。
コンポーザースクリプトを使用してビルドプロセスを自動化できますか? 。 composer.jsonファイルにスクリプトを定義することにより、コードのコンパイル、アセットの削除、ドキュメントの生成などのタスクを自動化できます。これらのスクリプトは、「Composer RunScript」コマンドを使用してコマンドラインから実行できます。開発プロセスはより効率的です。繰り返しタスクを自動化することにより、時間を節約し、エラーのリスクを減らすことができます。作曲家スクリプトは、同じタスクが毎回同じ方法で実行されるため、ビルドプロセスをより一貫性にします。他のツールと組み合わせて使用できます。たとえば、Composerスクリプトを使用してGulpタスクを実行したり、PHPunitテストスイートを実行したりできます。これにより、作曲家スクリプトが提供する自動化の恩恵を受けながら、他のツールの機能を活用できます。自動化にComposerスクリプトの使用について詳しく知るにはどうすればよいですか?
自動化にComposerスクリプトの使用について詳しく知るのに役立つ多くのリソースがあります。公式の作曲家のドキュメントは、始めるのに最適な場所です。また、Composerスクリプトを使用するための例とベストプラクティスを提供するオンラインで利用可能な多くのチュートリアルやブログ投稿もあります。
以上がPHPマスター|作曲家スクリプトを使用して自動化を構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。