Phing-PHPプロジェクトの構築

私たちの多くは、プロジェクトが本番環境への出力の準備を必要とする場合があり、多くの場合、この準備は何度も実行する必要がある多くのアクションで構成されます(たとえば、リリースバージョンのビルド時)。 多くの場合、タスクは単純なコンソールコマンドの実行、キャッシュのクリア、JSとCSSの縮小、またはそれらを1つのファイルにまとめることになりますが、このルーチン全体にはかなり時間がかかることがあります。プロジェクトの数日\時間\分を忘却に送ります。 このような状況では、プログラマーは、アセンブリの自動化や、運用ステータスのプロジェクトの準備などを試みます。そこでは、さまざまなアセンブリシステムが役立ちます。そのうちの1つについては、記事で説明します。

1.知人


だからPhing知ってください
Antの一種のPHPリミックスですが、学習しやすく、同時に非常に強力です。 Phingを使用すると、PHPプロジェクトでは簡単なタスクを解決できます。多くの組み込みツールと優れたAPIがあり 、組み込みツールではまだ十分ではありません。 XMLファイルを使用してアセンブリを制御できます。XMLファイルには、プロジェクトのアセンブリプロセス中に実行される目標とタスクが記述されています。

2.インストール


Phing-PEARリポジトリからインストールする最も簡単な方法。
$ pear channel-discover pear.phing.info $ pear install phing/phing 

最新バージョンを使用する場合は、ベータ版をインストールできます。
 $ pear install phing/phing-beta 

そして、プロジェクトを手伝いたい人、または単にそれがどのように機能するかを見たい人のために、SVN(製品の開発バージョン-バグが含まれているかもしれません!)があります。
 $ svn checkout http://svn.phing.info/trunk phing 

公式Webサイトのダウンロードページから、より完全なパッケージをダウンロードすることもできます。

3. Hello World!


または、むしろHello Build!
例(build.xml):

 <project name="make_project" basedir=".." default="build"> <property name="src_dir" value="protected/" override="false"/> <property name="res_dir" value="public/" override="false"/> <target name="clear_cache_dir"> <echo>  </echo> <delete> <fileset dir="${res_dir}/assets/"> <include name="**"/> </fileset> <fileset dir="${src_dir}/runtime/"> <include name="**"/> </fileset> </delete> </target> <target name="build" depends="clear_cache_dir"> </target> </project> 


ファイルをコマンドに解析してみましょう。

上記のコードは、 make_projectという名前のプロジェクトと、ビルドファイルと元のビルドターゲットより1レベル高いベースディレクトリを宣言しています。 この場合、 ビルドターゲットはclear_cache_dirターゲットに依存しています(プロパティに依存)。
さらに上位には、 clear_cache_dirターゲットの説明が表示されます。 この目標には2つのタスクがあります。
1. echo- 「キャッシュディレクトリのクリア」行の出力
2. 削除 -ディレクトリ/アセット/および/ランタイム/を再帰的にクリアします

楽しみのために、タスクを複雑にしてみてください。
では、プロジェクトで.lessファイルをコンパイルする必要があります。
タスクについて説明します。
  <target name="less_exec"> <exec command="lessc ${project.basedir}/${src_dir}/${current_file} > ${project.basedir}/${src_dir}/${current_file}.css" /> </target> <target name="compile_less"> <echo> .less </echo> <foreach param="current_file" target="less_exec"> <fileset dir="${src_dir}/"> <include name="**/assets/css/*.less" /> </fileset> </foreach> </target> 

まず、ファイルセットを検討してください。特定の基準でファイルのリストを作成するタスクです。 このファイルセットには、テンプレート** / asset / css / *。Lessの includeプロパティ(ファイルを含む)が1つしかありません(**は任意の入れ子のディレクトリです)。
つまり、 ファイルセットには次の条件があります。/ asset / css /ディレクトリにある.less拡張子のファイルを検索します。これは、$ { src_dir }にネストされた任意のディレクトリにあります(上記のコードを参照 )。
次に、 foreachタスクを使用して検出されたファイルのリストを 調べ 、変数$ { current_file }( param- リストの現在の値がターゲットタスクに転送される変数)の各検出されたファイルをless_execタスク( target- リストの各値を処理 するターゲットタスク )に送信します
less_exec-ファイルへのパスを端末のlesscコマンドの呼び出しに挿入し、出力ファイルとして.lessファイル+ .cssへのパスを指定します。 その結果、プロジェクト内のすべての.lessファイルは%filename%.less.cssにコンパイルされます
必要に応じて、これらのファイルの名前を標準の.cssに変更したり縮小したりするタスクを作成できますが、これは読者の宿題として残しておきます。

ちょうどいい? また、Phingには非常に広範な組み込みツール(JsMin、JsLint、tar、さらにさまざまなVCSと対話するためのツール)があることを考慮すると、アセンブリをすばやく自動化し、リポジトリに送信したり、プロジェクトをバックアップしたりできます。

4.利益?


そして、この場合は明らかです-30分でプロジェクトのアセンブリを自動化し、日常的な操作から自分を救うことができます。 Phingの標準機能では十分でない場合-独自のタイプのタスクを作成できます。すべてが非常に簡単に行われ、PHPおよびXMLに精通している開発者にとっては簡単です。
.lessファイルをバトルサーバーにアップロードする前に通常の.cssにコンパイルする必要があるときに、Phingに興味がありました。 しかし、すべての開発者にはPhingが役立つタスクがあると確信しています。

Source: https://habr.com/ru/post/J121809/


All Articles