1

誰かがマッパーでPhingを使用する方法の例を教えてもらえますUpToDateTaskか?私はそれを理解することができず、ネット上で例を見つけることができません。

これが私が達成しようとしていることです。ExecTaskとRubyのSASSパーサーを使用してCSSに変換するSCSSファイルがたくさんあります。ただし、ソースファイルのいずれかが変更された場合にのみCSSファイルを再生成したいと思います。

ソースSCSSファイルはにapp/assets/cssあり、コンパイルされたファイルはに配置されapp/webroot/cssます。を使用して、のファイルのいずれかがのファイルのいずれよりも新しい UpToDateTaskかどうかをテストするにはどうすればよいですか?app/assets/cssapp/webroot/css

SASSコンパイルには、CSSファイルへの1対1のファイル名マッピングがないことに注意してください。最終的に3〜4個のCSSファイルにコンパイルされる12個のSCSSファイルが存在する可能性があります。これらのCSSファイルを自分のファイルにハードコーディングするだけでよいことはわかってbuild.xmlいますが、より一般的で再利用可能なビルドターゲットを作成したいと思います。

前もって感謝します!

4

2 に答える 2

1

どの結果ファイルが存在するかを事前に知っている場合は、IDマッパーを使用して、各ソースファイルが単一の結果ファイルよりも新しいかどうかを確認できます。結果ファイルごとにこれを行うと、変更があったかどうかがわかります。

于 2011-08-01T09:09:45.470 に答える
0

試行錯誤しながら自分で考えました。uptodate上記のシナリオ(ソースディレクトリ内のファイルが宛先ディレクトリ内のファイルよりも新しいかどうかをテストする)は、タスクでマッパーを使用して実行することはできません。タスクはuptodate単純にを繰り返し、filesetを使用してファイル名を変換し、mapperそのファイルを元のファイルと比較します。

とりあえず、アンダースコアで始まらないすべてのファイル(SASSに含まれる)を含むファイルセットと、単にグロブする単純なマッパーを使用*.scssしてい*.cssます。動作しますが、完璧ではありません。インクルードファイルの1つだけが変更された場合(アンダースコアで始まるファイル)、Phingは変更を検出せず、CSSアセットの再構築をスキップします。

于 2011-08-01T08:26:24.780 に答える