Node JS:给定一个 html 字符串,如何获取所有标签中的内容<script>,操作和替换它?



概述

我正在做一个项目,该项目有几十个.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();

预期行为

我需要:

  1. 在HTML字符串中查找所有script tags
  2. 获取<script>标签内部的代码
  3. 操作此代码(本质上是minify)
  4. 用现在缩小的代码替换它

我试图避免使用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);

结果,您将获得脚本标签中的内容

最新更新