使用gulp插件gulp-aotuprefixer-html给html中的样式自动加前缀出现副作用

发布于 2022-09-06 06:43:07 字数 569 浏览 27 评论 0

使用gulp插件gulp-aotuprefixer-html,之后发现生成的自动加了前缀的html文件中的汉字都被(除了注释中的)转化成了特殊字符,我只想给style标签中的样式自动加前缀,不想动其他部分,看了下gulp-aotuprefixer-html的源码也没看太明白,只知道转化过程中html文件被转换成了字符串,这个问题怎么办呢?怎么样只操作style标签不影响其他部分的文字呢?

图片描述

还有其他影响:
单标签闭合用的/被去掉了:
图片描述
没属性值得属性被加了空值比如v-clock变成了v-clock=""
link和script标签中的单引号被转换成了双引号,
整体像被格式化了一遍

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱情眠于流年 2022-09-13 06:43:07

这个插件用到了cheerio这个模块,效果就是这样的。
中文的问题可以解决,cheerio带入参数decodeEntities: false就可以避免中文被转码。
其他问题应该都不是大问题。
其实在HTML5的规范里,自闭合标签结尾不写斜杠才是规范。

要解决楼主的问题只能用node把html里的style提取出来,处理后再replace掉。示例代码如下:

const fs = require('fs');
const path = require('path');
const htmlAutoprefixer = require('html-autoprefixer');

const htmlPath = path.join(__dirname, 'index.html');
let htmlContent = fs.readFileSync(htmlPath).toString();

htmlContent = htmlContent.replace(/<style[^>]*>([^<>]+)<\/style>/, style => {
  return htmlAutoprefixer.process(style);
});

fs.writeFileSync(htmlPath.replace('index.html', 'index2.html'), htmlContent);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文