HTML5 Boilerplate Build script - HTML в подпапках и относительные ссылки на проблему CSS / JS - PullRequest
1 голос
/ 26 сентября 2011

Мой проект использует 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, и я попытался добавить это в свойство file.pages в project.properties

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

Но без кубиков пути CSS / JS заменяются так, как если бы файлы находились в корневой папке, например:

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

Что явно не работает. Был бы очень признателен, если кто-нибудь знает обходной путь / модификацию для этого, или если это может быть просто запретом?

Заранее спасибо за любую помощь: D

Ответы [ 2 ]

1 голос
/ 09 января 2012

Вам необходимо отредактировать скрипт 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>

Я полагаю, что регулярное выражение может быть более эффективным.

Simon

1 голос
/ 06 октября 2011

Может быть, вы можете попробовать использовать

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

шаблон glob может лучше соответствовать сценарию сборки. Я только что проверил это на пустом проекте, с файлами index.html в article/fold1/ и article/fold2/, оба с тем же относительным путем, что и ваш

Я получаю

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

также, это может избавить вас от головной боли при обновлении html-файлов в папке статей, шаблон **/*.html будет перехватывать любые html-файлы в этих каталогах.

...