我有一个使用html5样板构建的Web应用程序,它有多个可用的皮肤。
每个皮肤都包含在一个单独的css文件中,并且要使用的皮肤是通过配置文件设置的。
目前,HTML5样板构建脚本缩小并重命名第一个外观(位于style.css(默认的css文件)中),它还会缩小我在同一文件夹中的其他两个css文件,但它不重命名它们,这将导致在实时服务器上缓存问题 - 当css文件具有远期到期日期时,用户的Web浏览器将不会获取对其他外观的更新。 / p>
有人可以给我一些关于如何添加对额外css文件的支持的提示吗?
为了澄清,在运行构建脚本之前,我在css文件夹中有以下文件:
style.css中
skin2.css
skin3.css
运行构建脚本后:
e3b847ea91a5666541ef13b4d9e0797342f5fc31.css - >好
skin2.css - >坏
skin3.css - >坏
我已经从构建脚本中删除了我认为相关的代码,并添加了一些注释来解释发生了什么:
<!-- copy source file to intermediate directory -->
<copy file="${dir.source}/${dir.css}/${file.root.stylesheet}" tofile="${dir.intermediate}/${dir.css}/${file.root.stylesheet}"/>
<!-- copy skeleton to concat file -->
<copy file="${dir.intermediate}/${dir.css}/${file.root.stylesheet}"
tofile="${dir.intermediate}/${dir.css}/style-concat.css" overwrite="true"/>
<!-- load the file into a property -->
<loadfile property="imports" srcfile="${dir.intermediate}/${dir.css}/${file.root.stylesheet}"/>
<var name="concat-files" value="${file.root.stylesheet}"/>
<!--minify CSS-->
<apply executable="java" parallel="false">
<fileset dir="${dir.intermediate}/${dir.css}/" includes="style-concat.css"/>
<arg line="-jar"/>
<arg path="${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="merge" to="${basedir}/${dir.intermediate}/${dir.css}/style-concat.min.css"/>
<targetfile/>
</apply>
<!--calculate checksum of css file (this is used for filename)-->
<checksum file="${dir.intermediate}/${dir.css}/style-concat.min.css" algorithm="sha" property="css.sha" />
<if>
<isset property="gae.css_dir" />
<then>
<property name="style.css" value="${gae.css_dir}/${css.sha}.css" />
</then>
<else>
<property name="style.css" value="${dir.css}/${css.sha}.css" />
</else>
</if>
<copy file="${dir.intermediate}/${dir.css}/style-concat.min.css" tofile="${dir.publish}/${dir.css}/${css.sha}.css" />
<!--minify REMAINING CSS files (my other skins)-->
<apply executable="java" parallel="false">
<fileset dir="${dir.source}/${dir.css}/" excludes="${concat-files}" includes="**/*.css"/>
<arg line="-jar"/>
<arg path="${dir.build.tools}/${tool.yuicompressor}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.css" to="${basedir}/${dir.publish}/${dir.css}/*.css"/>
<targetfile/>
</apply>
<foreach list="${file.stylesheets}" param="css_file" target="-css-remove-concatenated-stylesheets" />
<!--replace reference to css in source with new filename-->
<replaceregexp match="<!-- CSS concatenated [\d\w\s\W]*?!-- end CSS-->" replace="<link rel='stylesheet' href='${style.css}'>" flags="m">
<fileset dir="${dir.intermediate}" includes="${page-files}"/>
</replaceregexp>
完整版本脚本可在此处找到:http://pastebin.com/Cm1LzJpE
答案 0 :(得分:1)
如果我正确理解您的构建文件,则不要执行
<checksum>
...
<copy file="${dir.intermediate}/${dir.css}/style-concat.min.css" tofile="${dir.publish}/${dir.css}/${css.sha}.css" />
部分代表skin*.css
个文件。你只为这个做
style.css
。
第二次申请后,没有校验和部分。您还需要为每个样式文件重复校验和复制 此问题可能有助于完成此任务:Ant: Rename files to include their MD5