使用sass开发web-components组件

思路:借助chokidar监听变化,将scss编译成css后插入
同时执行chokidar监听和webpack server

    "start": "npm run watch:css & webpack serve","watch:css" : "node chokidarStyles.js",
// chokidarStyles.js
const fs = require('fs');
const path = require('path');
const chokidar = require('chokidar');
const sass = require('sass');
const autoprefixer = require('autoprefixer');
const postcss = require('postcss');// 要监听的文件或目录路径
const filePath = './src/styles.scss';
const templatePath = './src/ComponentLoadingTemplate.ts';// 监听文件或目录变化
const watcher = chokidar.watch(filePath);const changeCss = () => {// 编译 SCSS 文件const scssFilePath = path.resolve(__dirname, filePath);try {const result = sass.renderSync({file: scssFilePath, outputStyle: 'expanded'});const cssContent = result.css.toString();// 浏览器兼容postcss([autoprefixer({overrideBrowserslist: ['last 30 versions', '> 0.5%', 'Firefox ESR', 'not dead']})]).process(cssContent, {from: undefined}).then(_result => {// 添加样式后的cssconst prefixedCss = _result.css;// 读取模板文件const templateContent = fs.readFileSync(templatePath, 'utf-8');const regex = /<style>([\s\S]*?)<\/style>/;const cssText = templateContent.match(regex);if (cssText && cssText[1] !== prefixedCss) {// 将 CSS 内容插入模板中const modifiedTemplateContent = templateContent.replace(regex, `<style>${prefixedCss}</style>`);// 更新输出文件const outputFilePath = path.resolve(__dirname, templatePath);fs.writeFileSync(outputFilePath, modifiedTemplateContent);}}).catch(error => {console.error('Error processing CSS:', error);});} catch (e) {console.log(e);}
}// 监听文件或目录变化事件
watcher.on('change', (path) => {console.log(`File ${path} has been changed`);changeCss();
});watcher.on('add', (path) => {console.log(`File ${path} has been added`);
});watcher.on('unlink', (path) => {console.log(`File ${path} has been removed`);
});// 监听错误事件
watcher.on('error', (error) => {console.error(`Watcher error: ${error}`);
});// 在需要的时候停止监听
// watcher.close();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解决 SQL 深层分页问题?

我们可以通过减少回表次数来优化。一般有标签记录法和延迟关联法。 标签记录法 就是标记一下上次查询到哪一条了&#xff0c;下次再来查的时候&#xff0c;从该条开始往下扫描。就好像看书一样&#xff0c;上次看到哪里了&#xff0c;你就折叠一下或者夹个书签&#xff0c;下…

windows环境下使用cmake3.16.2+mingw编译opencv4.5.4

一、cmake下载地址&#xff1a; https://cmake.org/download/ 下载zip版本“cmake-3.xx-win64-x64.zip” 解压到指定目录并添加bin所在目录到环境变量。 二、mingw-W64下载链接&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ 推荐下载 离线版本“x86_64-posi…

内网搭建阿里-龙蜥镜像站

1.问题&#xff1a;官网BUG 本地做 yum 仓库&#xff0c;下载的文件&#xff0c;只有 23 版本的&#xff0c;其他的版本没有文件(版本23&#xff0c;占用2.1T后&#xff0c;一直不下载其它版本&#xff1b;) 2.解决方案&#xff1a; 2.1. rsync剔除不要的版本 [rootlocalh…

windows server2012 定时删除文件

windows server2012 定时删除文件 背景 用户从chrome浏览器下载文件到固定目录C:\Users\${user_name}\Downloads\&#xff0c;需每天清理更新时间为前一天的文件和空文件夹。 解决步骤 1 编写clean.bat脚本删除C:\Users\${user_name}\Downloads\下文件&#xff0c;并打印日…

三维GIS开发的就业前景

一、前言 三维GIS是一个伪概念,GIS是地理信息系统&#xff0c;三维GIS就是三维地理信息系统&#xff0c;在课本上&#xff0c;专业概念上&#xff0c;也没有这一说法吧&#xff0c;所以三维GIS&#xff0c;就是技术人员造概念拼凑造出来的&#xff0c;本质上就是GIS三维可视化…

[FastDDS] 基于eProsima FastDDS的移动机器人数据中间件

[FastDDS] 基于eProsima FastDDS的移动机器人数据中间件 注明&#xff1a;无 本栏目主要讲述&#xff0c;基于eProsima FastDDS的移动机器人数据中间件的实现、使用、性能测试。 What is [ FastDDS ]: eProsima Fast DDS是DDS&#xff08;数据分发服务&#xff09;规范的C实现…

SSH连接密码问题:原因、表现与解决方案

SSH连接密码问题&#xff1a;原因、表现与解决方案 写在最前面1. 密码错误2. SSH服务配置问题3. 账户锁定或禁用4. 密钥认证问题5. SSH版本不兼容6. 服务器负载或连接数过多7. IP地址被限制 小结 写在最前面 SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0…

抖音博主老阳推荐的人力RPO蓝海项目如何?【转载】一位实操者的经验之谈

在刷短视频的时候&#xff0c;被抖音博主老阳讲的职场干货吸引了&#xff0c;讲的也比较有感染力&#xff0c;深入了解之后知道了他们有帮推荐副业项目&#xff0c;由于我有干人力资源的经验&#xff0c;对老阳推荐的人力RPO项目感兴趣。 初识人力RPO 但是看网上有人说被骗什么…

Linux搭建JavaEE环境

Linux搭建JavaEE环境 需要在 Linux 下进行 JavaEE 的开发&#xff0c;我们需要安装如下软件 JDKtomcatmysqlidea 安装JDK 安装步骤 首先去官网下载jdk的linux版本 下载地址&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ 1) mkdir /opt/jdk 2) 通过 …

在山东开展行政窗口神秘顾客调研需要注意什么?

在行政服务领域&#xff0c;为了不断优化服务质量、提升民众满意度&#xff0c;许多机构开始采用“神秘顾客”这一市场调研方法。神秘顾客&#xff0c;即经过专业培训的调查员&#xff0c;以普通民众的身份&#xff0c;对行政窗口的服务进行暗访和评估。这种调研方式能够真实反…

如何使用 NFTScan NFT API 在 Mantle 网络上开发 Web3 应用

Mantle Network 是建立在以太坊区块链之上的第 2 层扩展解决方案&#xff0c;采用了 Optimistic Rollups 技术&#xff0c;由 BitDAO 孵化&#xff0c;以提供比以太坊更快速和更经济的交易体验。由于 Mantle 基础链构建在 OP Stack 之上并与 EVM 兼容&#xff0c;因此以太坊网络…

2023年全球前端大技术大会(GMTC北京站2023):核心内容与学习收获(附大会核心PPT下载)

此次峰会是一次内容丰富、有深度和广度的技术盛会。参会者不仅可以了解前端技术的最新发展和未来趋势&#xff0c;还可以与业界专家交流心得&#xff0c;提升自己的技能和能力。同时&#xff0c;此次大会也促进了全球前端社区的交流和合作&#xff0c;推动了前端技术的创新和发…

阅读笔记(Multimedia Systems2020)Review on image-stitching techniques

Wang Z, Yang Z. Review on image-stitching techniques[J]. Multimedia Systems, 2020, 26: 413-430. DOI https://doi.org/10.1007/s00530-020-00651-y

Linux deb软件包制作

0 前言 本文重点梳理内核、应用的deb安装包应该如何制作。 1 内核安装包 详见《Ubuntu内核编译》。 2 应用安装包 TODO 参考资料 [1]编译打包 - Ubuntu中文 [2]RPM 简易打包 [3]CheckInstall&#xff1a;快速创建 deb、rpm 包 LinuxTOY [4]备案&#xff1a;用 dpkg -b …

fastApi笔记04-查询参数和字符串校验

额外校验 使用Query可以对查询参数添加校验 from typing import Unionfrom fastapi import FastAPI, Queryapp FastAPI()app.get("/items/") async def read_items(q: Union[str, None] Query(defaultNone, max_length50)):results {"items": [{"…

Vue3学习——标签的ref属性

在HTML标签上&#xff0c;可以使用相同的ref名称&#xff0c;得到DOM元素ref放在组件上时&#xff0c;拿到的是组件实例&#xff08;组件defineExpose暴露谁&#xff0c;ref才可以看到谁&#xff09; <script setup lang"ts"> import RefPractice from /compo…

天锐绿盾 | 文件数据\资料防泄漏软件 \ 自动智能透明加密保护

怎么防止公司办公终端文件数据资料外泄? 防止公司办公终端文件数据资料外泄是非常重要的&#xff0c;以下是一些有效的措施&#xff1a; 限制访问权限&#xff1a;根据员工的职责和需求&#xff0c;设定文件和数据资料的访问权限。确保只有授权人员才能访问敏感信息。 加密存…

人声伴奏分离怎么搞?分享4个实用的工具!

在音乐制作和后期处理中&#xff0c;人声与伴奏的分离常常是一个复杂而精细的过程。随着科技的发展&#xff0c;现在市面上已经涌现出了一批高效且易于使用的人声伴奏分离工具&#xff0c;它们如同音乐制作人的得力助手&#xff0c;帮助我们将人声与伴奏完美分离&#xff0c;提…

使用Docker部署Docker-Compose-Ui工具并实现公网访问

文章目录 1. 安装Docker2. 检查本地docker环境3. 安装cpolar内网穿透4. 使用固定二级子域名地址远程访问 Docker Compose UI是Docker Compose的web界面。这个项目的目标是在Docker Compose之上提供一个最小的HTTP API&#xff0c;同时保持与Docker Compose CLI的完全互操作性。…

2024,深层互联第二代IndoorLink领夹式一对多讲解器面世!

新年之初&#xff0c;每一步都举足轻重。2024开年之际&#xff0c;资深讲解器厂家深层互联重磅推出第二代IndoorLink领夹式一对多讲解器&#xff0c;各项性能指标全线升级&#xff0c;成为新的行业标杆&#xff0c;一经面世即引起巨大反响。 2023年2月&#xff0c;首代IndoorL…