WebStorm 利用 FileWatchers 实现 JS、CSS 压缩

news2024/10/6 8:25:24

WebStorm 利用 FileWatchers 实现 JS、CSS 压缩

合理的使用 JS、CSS 压缩可以大大缩减文件的大小,使网页加载速度更快一些(虽然对我来说意义不大,因为我不做前端。。。)。

为什么会有这篇文章,是因为在做一些 JS 逆向的时候一些网站会对 JS 压缩做检测(例如 x82y),在做代码还原的时候,每次都要把还原后的代码替换到本地然后打开网页查看代码是否有错误,每次都要使用 JS 压缩网站进行压缩,非常不方便,所以去搜索了一些相关资料有了这篇文章。

准备工作

我这里使用的是 MacOS 系统(Windows系统大差不差),WebStorm 的版本为 WebStorm 2023.1,下载 YUICompressor (一款 Yahoo 开源的 JS、CSS压缩软件),下载完成后是一个 jar 包,如下图

YUICompressor用法

创建 src.js 文件,内容如下

function demo(a, b) {
    return a + b;
}

压缩 JS 文件命令

java -jar yuicompressor-2.4.8.jar --type js --charset utf-8 -o dest.js src.js 

输出 dest.js 文件,内容如下

function demo(d,c){return d+c};

创建 src.css 文件,内容如下

body {  
	padding: 0;  
	margin: 0;  
}

压缩 CSS 文件命令

java -jar yuicompressor-2.4.8.jar --type css --charset utf-8 -o dest.css src.css 

输出 dest.css 文件,内容如下

body{padding:0;margin:0}

以上只是简单举例,更详细的用法还需要详细阅读 YUICompressor 文档。

IDE File Watchers 功能

上文可以通过 java -jar 命令来手动的运行去压缩文件,但如果每次修改了源文件都要手动运行命令的话,那么与我们的初衷相违背,不过 Jetbrains 的 IDE 工具貌似都提供了 File Watchers 功能。

File Watchers 是一个实时监测工程项目中文件变化,并提供回调接口的功能,

由于我的 WebStorm 使用了官方的汉化插件,所以我的 File Watchers 路径为:设置 -> 工具 -> File Watchers

选择 Settings

在左侧 工具 选项卡中继续选择 File Watchers 选项,点击 +

选择 <custom> 选项

名称:自己定义即可,例如我创建了 2 个,分别为 YUI Compressor JSYUI Compressor CSS

文件类型:如果要监听 JS 文件选择 JavaScript、如果要监听 CSS 文件,选择 级联样式表

程序:选择上文从 GitHub 中下载的 jar 包即可

实参:其实就是上文中执行的命令,只不过把文件名替换为了 $FileName$ 则表示当前文件
名,-o 命令参数,为输出路径,$FileNameWithoutExtension$.min.js$ 表示输出文件名,完整内容为 $FileName$ -o $FileNameWithoutExtension$.min.css

要刷新的输出路径:$FileNameWithoutExtension$.min.css

以上只是监听 JS 的配置,CSS 同理。

效果展示

关注我们

微信公众号:【趣码周

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

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

相关文章

Dropwizard 中使用Jersey开发Restful接口(修改、删除)

前面我们介绍了使用Jersey开发查询、新增接口&#xff0c;并规范了响应报文格式&#xff0c;如果您想了解&#xff0c;可以参考&#xff1a; Dropwizard 中使用Jersey开发Restful接口&#xff08;查询接口&#xff09;https://blog.csdn.net/m1729339749/article/details/1308…

C++内存总结

1.2 C内存 参考 https://www.nowcoder.com/issue/tutorial?tutorialId93&uuid8f38bec08f974de192275e5366d8ae24 1.2.1 简述一下堆和栈的区别 参考回答 区别&#xff1a; 堆栈空间分配不同。栈由操作系统自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变…

uCOSii消息邮箱管理

uCOSii消息邮箱管理 (MESSAGE MAILBOX MANAGEMENT) 消息邮箱主要用于中断和任务之间进行邮件传递&#xff0c;或者是在任务与任务之间进行邮件交换。 1、消息邮箱管理重点需要了解下面几个函数 消息邮箱指针OSMboxCreate(消息邮箱数据块指针) 建立并初始化一个消息邮箱,在初…

一文秒懂BI是什么?

在数字化时代背景下&#xff0c;商业智能&#xff08;Business Intelligence&#xff0c;简称BI&#xff09;成为了信息化热词&#xff0c;我们经常能听到企业说“上BI”、“建设BI系统”、“构建BI决策平台”“BI数据分析”“BI可视化”等内容。 一、那么BI到底是什么呢&…

如何在IEEE的模板中引用Arxiv中的论文

如何在IEEE的模板中引用Arxiv中的论文 本文章记录如何在IEEE Transactions的模板中&#xff0c;引用Arxiv中的论文&#xff0c;记录具体的论文格式信息。 目录 如何在IEEE的模板中引用Arxiv中的论文1.在IEEE的模板中引用Arxiv中的论文格式是怎么样的呢&#xff1f;2.在bib文件…

C# 事件(event)

目录 一、概述 二、事件和委托的区别 委托和事件的概念 委托和事件的作用 委托和事件的区别 三、事件的基本用法 结束 一、概述 事件是一种特殊的多播委托&#xff0c;仅可以从声明事件的类&#xff08;或派生类&#xff09;或结构&#xff08;发布服务器类&#xff09…

Revit中门窗的翻转控件该如何添加?

一、门窗的翻转控件该如何添加? 放置过门窗的小伙伴会发现&#xff0c;门窗是可以进行左右前后进行翻转的&#xff0c;可以通过这些小按钮或是空格键进行门窗的朝向&#xff0c;十分的人性化&#xff0c;可以帮我们更好的放置门窗。一般上我们创建门窗族时系统会自动为我们添加…

我们和ChatGPT聊了聊BI的未来

ChatGPT是什么? ChatGPT是OpenAI开发的聊天机器人&#xff0c;2022年11月上线&#xff0c;迅速火爆全球&#xff0c;1周突破100万用户&#xff0c;仅用2个月全球突破1亿用户&#xff0c;碾压史上所有应用程序。美国有学生用ChatGPT写论文拿下全班最高分&#xff0c;ChatGPT可以…

微信支付链接二维码生成

1、进入composer官方网站&#xff0c;搜索phpqrcode安装包 composer命令安装 composer require aferrandini/phpqrcode 生成二维码图片的公共方法&#xff1a; // 公用二维码生成 static function setQrcode($url){//二维码图片保存路径$path advert/qrcode/.date("Ymd&q…

JavaScript高级二、构造函数常用函数

零、文章目录 JavaScript高级二、构造函数&常用函数 1、深入对象 &#xff08;1&#xff09;创建对象三种方式 利用对象字面量创建对象 利用 new Object 创建对象 利用构造函数创建对象 案例如下&#xff1a; <!DOCTYPE html> <html lang"en"&g…

干货分享:小红书商业化+微信社区运营,引流自动裂变拓客方案

干货分享&#xff1a;小红书商业化微信社区运营&#xff0c;引流自动裂变拓客方案 背景&#xff1a;2023为止小红书基本已是当代年轻人都会下载和使用的软件了&#xff0c;小红书是生活方式平台和消费决策入口&#xff0c;通过智能机器人学习和对用户的精准智能匹配走红&#x…

chatgpt赋能python:Python中datetime的用法

Python 中datetime的用法 介绍 在 Python 中&#xff0c;datetime 是一个非常重要和常用的模块&#xff0c;它提供了很多操作日期和时间的函数。datetime 模块中最主要的三个类是 datetime、date 和 time。其中 datetime 类是 date 和 time 的组合&#xff0c;所以这里只介绍…

C++读写文本文件

2023年5月30日&#xff0c;周二下午&#xff1a; 这几天学习了C对文本文件的读写&#xff0c;写篇博客来总结一下 由于内容太多&#xff0c;我没法一次性写完&#xff0c;之后会不定期更新的 我使用C标准库中的fstream库来读写文本文件 用fstream来读写文本文件有两种方式&a…

element dialog对话框中select/cascader 弹窗不跟随问题

Element 在使用对话框中出现的情况 Select 选择器 Cascader 级联选择器 在这两种组件组合使用是出现了滑动 弹出框不跟随情况&#xff0c;如下 出现这种情况原因是因为弹出框相对的位置是body&#xff0c;展示后&#xff0c;如果body不动&#xff0c;所以弹窗位置不会发生改变…

研发工程师玩转Kubernetes——创建一个测试容器

测试容器并不是什么都没有的容器&#xff0c;只是它没有我们期望的常驻进程。我们常用它来做一些测试。 举个例子&#xff0c;在《研发工程师玩转Kubernetes——自动扩缩容》中我们使用本地wrk进行了压力测试。如果我们希望进入容器手工调用wrk&#xff0c;该怎么做呢&#xff…

后摩尔时代,洞见第三代功率半导体器件参数测试的趋势和未来!

前言 2022年&#xff0c;全球半导体产业连续高增长&#xff0c;进入调整周期。与此形成对比&#xff0c;在新能源汽车、光伏、储能等需求带动下&#xff0c;第三代半导体产业保持高速发展&#xff0c;全球化供应链体系正在形成&#xff0c;竞争格局逐步确立&#xff0c;产业步…

网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

计算机视觉实战--OpenCV进行红绿灯识别

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 OpenCV是一个开源的计算机视觉库&#xff0c;可以用于实现各种图像和视频处理任务&#xff0c;包括红绿灯识别。可以帮助自动驾驶汽车、智能交通系统等设备准确地识别红绿灯的状态&#xff0c;以便做出正确的决策。今天&a…

2022-Deep generative molecular design reshapes drug discovery-分子生成设计重塑药物发现

文章目录 药物发现中的深度生成模型化合物/分子的表示 Deep Generative Models递归神经网 RNN变分自动编码器 VAE生成性对抗网络 (Generative Adversarial Networks, GANs)Flow-based models强化学习(Reinforcement Learning, RL) 在小分子药物设计中的应用生成有效的小分子生成…

X2000 freeRTOS usb_bulk通信

例程 官方例程..\freertos\example\usb\device\gadget_generic_bulk.c&#xff0c;代码如下&#xff1a; #include <common.h> #include <usb/gadget_bulk.h> #include <os.h>static const struct gadget_id bulk_id {.vendor_id 0x1CBE,.product_id 0x…