【问题标题】:Edit src strings of js files after grunt-php2html在 grunt-php2html 之后编辑 js 文件的 src 字符串
【发布时间】:2015-08-01 13:56:23
【问题描述】:

我正在使用grunt-php2html 将我的开发*.php 文件编译成“客户端就绪”*.html 文件,它运行良好。

我倾向于在开发版本(php)中有未缩小的文件,而在 html 中有丑陋的文件。我通过 grunt 动态地丑化,所以我的文件得到.min. 附加到它们的文件名。

默认情况下,生成的 html 文件中仍会包含不带 .min. 的文件名,因此,我必须通过选项将 .js 替换为 .min.js,如下所示:

php2html: {
    options: {
        process: function(response, callback) {
            callback(response.replace(/\.js/g, '.min.js'));
        }
    }
}

但是我看到了这种解决方案的缺点,因为字符串 .js 不仅可能出现在 script 标记的 src 属性中,而且还出现在正文中,当然我希望它保持不变。

所以我的问题是,我该如何编写正则表达式以使其仅针对 real script 标记。如果有人有任何建议或替代解决方案,我会很高兴。

【问题讨论】:

    标签: javascript regex replace gruntjs php2html


    【解决方案1】:

    我建议不要寻找复杂的regular expression,而是利用所有缩小的 JS 文件所在的 JS 文件夹的路径。

    这可能是一个例子:

    var response = 'some .js here ... <script src="js/path/something.js"></script> another .js here';
    var res = response.replace(/(src=\"js\/path\/\w*)\.js/g, '$1.min.js');
    

    注意$1 的用法,它从正则表达式中获取第一组(括在括号中)的值以保持/维护。

    【讨论】:

    • 我的脚本文件要么在scripts 目录中,要么在scripts/libs 目录中,因此将/(src="scripts(\/|\/libs\/)\w*)\.js/g 作为匹配器似乎可以做到这一点。我希望我的正文中永远不会有scripts/foo.js :) 也感谢$1 的事情。
    • 顺便说一句,必须进一步更改正则表达式,因为某些文件可能不仅包含字母数字字符,还包含点和连字符,因此我当前的版本如下:/(src="scripts(\/|\/libs\/)[A-Za-z0-9_\.-]*)\.js/g跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多