我有一个像这样的目录结构:
-css
---subdir1
------common.css
---subdir2
------common.css
------custom.css
---subdir3
------common.css
------styles.css
我正在尝试遍历Phing中的每个目录,然后使用YUI压缩器将每个文件缩小为每个目录中的单个散列文件名。结果看起来像这样:
-css
---subdir1
------1973a613f7c87b03dbe589e6935a09bd.min.css
---subdir2
------1973a613f7c87b03dbe589e6935a09bd.min.css
---subdir3
------1973a613f7c87b03dbe589e6935a09bd.min.css
因此我需要知道我所在的每个目录,以便我可以将缩小的脚本输出到它。
这是我的两个目标:
<target name="minify">
<echo msg="Minifying CSS and JS files with YUI at ${yuicompressor}" />
<foreach param="filename" absparam="absfilename" target="runyui">
<fileset dir="${publicdir}/css">
<include name="*.css" />
<include name="**/*.css" />
</fileset>
</foreach>
</target>
<target name="runyui">
<filehash file="${abspathtopwd}" hashtype="MD5" propertyname="filehash" />
<echo msg="java -jar ${yuicompressor} -v --line-break 5000 --type css ${absfilename} >> ${abspathtopwd}/${filehash}.min.css" />
<exec command="java -jar ${yuicompressor} -v --line-break 5000 --type css ${absfilename} >> ${abspathtopwd}/${filehash}.min.css" />
</target>
其中:
如何在Phing的当前foreach迭代中获取当前工作目录(如果您愿意,还可以获得pwd)?我所能看到的只是文件本身的相对和绝对路径。
注意:我知道这个当前的解决方案会为每个输入文件创建一个新文件,但这就是我打算用 abspathtopwd 来解决的问题。
谢谢!
答案 0 :(得分:1)
对于对此问题感兴趣的任何人,请查看this post,这导致我:
<foreach param="dir" absparam="absdir" target="minify.directory">
<fileset dir="${publicdir}/css">
<type type="dir" />
<depth max="0" min="0" />
</fileset>
</foreach>
这允许我在迭代时指定目录约束,从而传递相对和绝对目录名而不是文件名。