【问题标题】:How to instruct grunt HTMLmin to ignore PHP markup如何指示 grunt HTMLmin 忽略 PHP 标记
【发布时间】:2014-01-12 21:10:35
【问题描述】:

我在我的 grunt.js 工作流程中使用 HTMLmin 来缩小我的 HTML。

我有一些文件也包含 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 标记?我浏览了文档,但没有看到任何明显的答案。

【问题讨论】:

  • 您使用的是哪个版本的 grunt-contrib-htmlmin?我使用 grunt-contrib-htmlmin@0.1.3 测试了您的示例,它确实对我有用。

标签: javascript php html gruntjs


【解决方案1】:

现代 JS 的世界并没有考虑在子目录中运行或经过任何类型的服务器端操作的模板。诀窍是用某种 data-* 属性注入 PHP after grunt minifies。我还没有开发出我完全满意的解决方案。但是,你可以尝试一些 grunt regex 任务来做这样的事情

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

在自定义 grunt 任务之后

<a href="<?= $templatePrefix;?>/foo/" class="<?= $activeLink;?>">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 代码 sn-ps 放入一个 JS 配置文件中,这样您的 PHP 代码就不会在您的 Gruntfile.js 中乱七八糟

第二次更新

最好的方法是在构建过程中让 grunt-usemin 注入 PHP 代码。最近发布的 usemin 2.3.0 通过 blockReplacements 具有这种能力。

功能请求:https://github.com/yeoman/grunt-usemin/pull/337 提交:https://github.com/yeoman/grunt-usemin/commit/83f6821a30020cbc9395d7257e0276cff142e219

基本上,你不能让 grunt 忽略 PHP,但你可以让它与 PHP 一起工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2021-12-25
    • 2016-01-01
    相关资源
    最近更新 更多