概述:
我正在做一个项目,该项目有几十个.Liquid
(Shopify)片段,其中<script> tags
包含JS代码。
它们类似于HTML
,看起来像这样:
{% assign variable = 'test' %}
<p>hey {{variable}}</p>
<script>console.log("hey")</script>
{% schema %}
{
...json stuff
}
{% endschema %}
问题:
基本上,我想做的是获取<script>
中的内容,对其进行操作,并替换为新的操作内容。
我设法使用cheerio
实现了这一点,但它最终会弄乱Liquid
变量,因为它无法识别它们。
我以前的代码看起来像这样:
let html = cheerio.load(code, { _useHtmlParser2: true });
const { data: js } = html("script").get()[0].children[0];
html("script").get()[0].children[0].data = await minifyJS(js);
const result = html.html();
预期行为:
我需要:
- 在HTML字符串中查找所有
script tags
- 获取
<script>
标签内部的代码 - 操作此代码(本质上是minify)
- 用现在缩小的代码替换它
我试图避免使用regex
,但我无法预见任何其他解决方案。
任何建议都将不胜感激。
谢谢!
要获取标签中的内容,可以使用正则表达式
<script(.|n)*?</script>
这只是正则表达式
let str = <Whatever string or data you want to extract script tags>;
let result = let result = str.match(/<script(.|n)*?</script>
/g);
console.log(result);
结果,您将获得脚本标签中的内容