1

テストに使用する CSS ファイルがあります。すべてのスタイルシートを @import します。

@import "css/structure.css"
@import "css/typography.css"
@import "css/forms.css"

これにより、スタイルと変更をテストすることができますが、実際にはライブにしたくない方法で行います.

このプロジェクトを「ビルド」するとき、これらの参照 (RegEx css/(.*?.css)) をすべて検索し、そのリストを FileSet として使用して、マージおよび圧縮したいと考えています。

マージと圧縮は、奇妙なことに、最も簡単な部分です。RegEx を使用して FileSet を構築する方法がまったくわかりません。

.properties ファイルに移動する必要がある場合はそうしますが、もっと自動化できるものを望んでいました。

どんな考えでも感謝します...

—ネイト

4

2 に答える 2

0

標準のファイルグロブが機能していませんか?やってみました:

<fileset dir="${resource.dir}" casesensitive="yes">
  <include name="**/*.css"/>
</fileset>

詳細については、FileSetTypeのドキュメントを参照してください。

于 2011-08-02T00:48:20.910 に答える
0

私は遠く離れており、優れたRegEx'erではありませんが、解決策を見つけたと思います:

メインの styles.css ファイルをロードし、そこから個々のファイルをスクレイピングして、すべてをカンマ区切りのプロパティに配置するターゲットを作成しました。

    <!-- Get CSS Filelist -->
<target name="get.css">
    <loadfile property="list-temp.css" srcFile="${source_dev}/css/styles.css"/>
    <propertyregex property="list-temp2.css" input="${list-temp.css}" regexp='[\s|.]*?@import url\("(.*?)"\);\s' replace="\1," casesensitive="false" global="true" />
    <propertyregex property="list-temp3.css" input="${list-temp2.css}" regexp=',$' replace="" casesensitive="false" global="true" />
    <propertyregex property="list.css" input="${list-temp3.css}" regexp='/\*.*?\*/' replace="" casesensitive="false" global="true" />
    <echo>${list.css}</echo>
</target>

${list.css} = "one.css, two.css, structure.css, etc.css" という結果になり、これをファイル リスト/ファイル セットとして使用できます。

きれいではありませんが、機能します。その RegEx をもっと堅牢なものに書き直せたらいいのにと思います (今、セミコロンを忘れるか、一重引用符を使用すると壊れてしまいます) ... しかし、物乞いは選択者になることはできません!

助けてくれてありがとうホイポロイ!

ニュージーランド

于 2011-08-03T16:07:29.333 に答える