2014-01-12 42 views
3

我使用HTMLmin我grunt.js的工作流程來縮小我的HTML。如何指導咕嚕HTMLmin忽略PHP標記

我有一些文件還包括PHP標記。例如:

<a href="<?php echo //code ?>">link</a> 

HTMLmin不能正確分析此,而是拋出一個異常錯誤:

Warning: [filename] 
Parse Error: <a href="<?php echo //code ?>">link</a> 
Aborted due to warnings. 

反正是有指導HTMLmin忽略PHP標記?我瀏覽過文檔,但沒有看到任何明顯的答案。

+1

您正在使用哪個版本的grunt-contrib-htmlmin?我使用[email protected]測試了你的例子,它確實對我有用。 –

回答

0

我幾乎同樣的錯誤上:

<input type="checkbox" <?= $UserCustomTastingChecked ?>> 

玩在線工具選項:http://kangax.github.io/html-minifier/,但仍不能讓它...

在另一個錯誤我有單引號內的單引號,但不在這裏 !!

0

現代JS的世界並沒有考慮到在通過任何類型的服務器端操作的走了子目錄或模板流水賬。訣竅是後有某種數據 - *屬性的咕嚕minifies注入PHP 。我還沒有開發出一個我完全滿意的解決方案。但是,你可以嘗試一些繁重的正則表達式任務定製咕嚕任務

<a href="<?= $templatePrefix;?>/foo/" class="<?= $activeLink;?>">Foo</a> 

後做這樣的事情

<a data-phphref="<?= $templatePrefix;?>" data-phpclass="<?= $activeLink;?>" href="/foo/">Foo</a> 

或者你也可以做全DOM操作,這可能會是更好的長期選擇。

更新

我想有一個第三選擇,這將是做令牌替換,使正則表達式更容易。你可以像UI-SRC /當發生變化的目錄看你的源模板文件,運行一個簡單的查找/替換爲令牌

<a href="{{templatePrefix}}/foo/">Foo</a> 

輸出到PHP配置爲使用模板目錄。這應該允許您來縮小像

<!-- build:js {{templatePrefix}}scripts/plugins.js --> 
<script type="application/javascript" src={{templatePrefix}}components/bootstrap/js/affix.js"></script> 
<!-- endbuild --> 

有了這樣一個咕嚕任務:

 "string-replace": { 
     template: { 
      files: { "./": "<%= yeoman.dist %>/*.html.php"}, 
      options: { 
       replacements:[ { 
        pattern: /{{templatePrefix}}/, 
        replacement: "<?= $templatePrefix;?>" 
       } 
      ] 
      } 
     }, 

獎金是把PHP代碼片段到一個JS配置文件使你的PHP代碼不亂丟整個Gruntfile.js

月2日更新

做到這一點的首選方式是有咕嚕-usemin在生成過程中注入PHP代碼。最近發佈的usemin 2.3.0具有blockReplacements的這種能力。

功能要求:https://github.com/yeoman/grunt-usemin/pull/337 承諾:https://github.com/yeoman/grunt-usemin/commit/83f6821a30020cbc9395d7257e0276cff142e219

基本上,你不能讓咕嚕忽視PHP,但你可以把它用PHP工作。