1

我的项目使用 HTML5Boilerplate 并包含带有 HTML 文件的子目录,这些文件在主根文件夹中引用 /js 和 css/。

示例:/article/xxx/index.html /article/yyy/index.html

这些 .html 文件具有相对路径 href/src 到根文件夹中的 css/js 文件。

<link rel="stylesheet" href="../../css/style.css" />
<script src="../../js/plugins.js"></script>
<script src="../../js/script.js"></script>

我试图让构建脚本识别子目录中的这些文件,并将路径替换为连接/缩小的 JS 和 CSS 文件,我尝试将其添加到 project.properties 上的 file.pages 属性

file.pages =  index.html, article/xxx/*.html, article/xxx/*.html

但是没有骰子,CSS/JS 路径会被替换,就好像文件位于根文件夹中一样,如下所示:

<link rel=stylesheet href='css/7d3586f292b65c896ef495e2e8ef042901d7c2e2.css'>

这显然不起作用。如果有人知道对此的解决方法/修改,或者这可能只是不可行,将非常感激?

提前感谢任何帮助:D

4

2 回答 2

1

也许你可以尝试使用

file.pages =  index.html, article/**/*.html

glob 模式可能更符合构建脚本。我刚刚在一个空项目上测试了这个, index.html 文件在article/fold1/and下article/fold2/,两者的相对路径都与你的相同

我明白了

<link rel=stylesheet href='../../css/b218ab4.css'>

此外,更新您的文章文件夹下的 html 文件可能会为您省去一些麻烦,该**/*.html模式将赶上这些目录中的任何 html 文件。

于 2011-10-05T20:47:35.820 回答
1

您需要编辑 build.xml 脚本。在第 630 行左右,一个正则表达式用于替换对连接版本的 js 和 css 引用,但它不考虑子目录。我将那里的行改为:

<echo message="Update the HTML to reference our concatenated script file: ${scripts.js}"/>
<!-- style.css replacement handled as a replacetoken above -->
<replaceregexp match="&lt;!-- scripts concatenated [\d\w\s\W]*?src=&quot;([\d\w\s\W]*?)js/[\d\w\s\W]*?!-- end ((scripts)|(concatenated and minified scripts))--&gt;" replace="&lt;script defer src='\1${scripts.js}\'&gt;&lt;/script&gt;" flags="m">
  <fileset dir="${dir.intermediate}" includes="${page-files}"/>
</replaceregexp>
<!--[! use comments like this one to avoid having them get minified -->

<echo message="Updating the HTML with the new css filename: ${style.css}"/>

<replaceregexp match="&lt;!-- CSS concatenated [\d\w\s\W]*?href=&quot;([\d\w\s\W]*?)css/[\d\w\s\W]*?!-- end CSS--&gt;" replace="&lt;link rel='stylesheet' href='\1${style.css}'&gt;" flags="m">
  <fileset dir="${dir.intermediate}" includes="${page-files}"/>
</replaceregexp>

我想正则表达式可以更有效。

西蒙

于 2012-01-09T11:35:33.397 回答