0

私はここでの質問に似たものに取り組んでいます:RHINOを使用してdirおよびsubdir内のすべての(css)LESSファイルをコンパイルするANTスクリプト

ただし、これを1つの特定の要件に合わせてカスタマイズするのに苦労しています。

  • .less変更中のファイルがある場合dir.less:1つのファイルに対してLESSを実行します(他の少ないファイルをインポートして、単一の結合された出力を作成するため)。

これは私の現在の状態ですbuild.xml

<target name="less" description="Compile LESS files">

    <echo message="Checking for LESS file changes..."/>

    <apply dir="${dir.less}" executable="${tool.less}" parallel="false" failonerror="true">

        <fileset dir="${dir.less}" includes="*.less" />
        <srcfile/>

        <mapper type="glob" from="*.less" to="${dir.css}/*.css"/>
        <targetfile/>

        <arg value="-compress" />
  </apply>

</target>

これにより、現在すべての.LESSファイルが作成され、適切な場所(住みやすい場所)に出力されます。マッパーグロブを次のように置き換えた場合:

<mapper type="glob" from="MainFileThatImportsOthers.less" to="${dir.css}/MainFileThatImportsOthers.css"/>

filesetディレクティブは、事実上その1つのファイルに縮小され.LESS、そのディレクトリ内の他のファイルを変更しても、タスクからの出力は発生しません。

誰かが私を正しい方向に向けることができるので、これを間違って設定し、.LESS毎回各ファイルを拒否することを避けることができますか?

4

2 に答える 2

0

正しく機能するソリューションを作成しました。upToDateタスクを使用Execして、コンパイラーに対して条件付きでトリガーするプロパティを設定しました。

<target name="scanLess" description="Scan for LESS file changes">

    <echo message="Checking for LESS file changes..."/>

    <uptodate property="tool.less.changed" targetfile="${dir.css}/MyFile.css" >
        <srcfiles dir="${dir.less}" includes="*.less" />
    </uptodate>

</target>

<target name="less" depends="scanLess" unless="tool.less.changed" description="Compile LESS files" >

    <echo message="LESS files changed, running lessc" />

    <exec executable="${tool.less}" failonerror="true">
        <arg value="${dir.less}/MyFile.less" />
        <arg value="${dir.css}/MyFile.css" />
        <arg value="-compress" />
    </exec>
</target>
于 2012-07-09T21:01:28.503 に答える
0

ANTでセレクターがどのように機能するかを調査します

于 2012-07-09T21:42:39.487 に答える