1

私のプロジェクトは HTML5Boilerplate を使用しており、メイン ルート フォルダーの /js および css/ を参照する HTML ファイルを含むサブディレクトリが含まれています。

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

これらの .html ファイルには、ルート フォルダー内の css/js ファイルへの相対パス href/src があります。

<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

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 に答える
1

多分あなたは使用しようとすることができます

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

glob パターンは、ビルド スクリプトにより適している場合があります。article/fold1/と の下にある index.html ファイルを使用して、空のプロジェクトでこれをテストしましたarticle/fold2/。どちらもあなたのものと同じ相対パスです

私は得る

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

また、アーティクル フォルダーの下にある html ファイルを更新する手間が省けるかもしれません。**/*.htmlパターンはこれらのディレクトリ内のすべての html ファイルをキャッチします。

于 2011-10-05T20:47:35.820 に答える