18910140161

Clean-CSS基于Node.js的CSS代码压缩工具

顺晟科技

2021-06-16 10:47:17

283

干净-CSS是一个非常简单的半铸钢钢性铸铁(铸造半钢)压缩程序,基于Node.js环境开发使用,可以删除半铸钢钢性铸铁(铸造半钢)中一些无用的空格、评论以及每个选择器后面的分号,还可以压缩通过@导入引入的半铸钢钢性铸铁(铸造半钢)文件。

干净-CSS基于Node.js的半铸钢钢性铸铁(铸造半钢)代码压缩工具

环境依赖

Node.js 4.0(在CentOS、Ubuntu、OS X和Windows操作系统上测试)

通过新公共管理安装

新公共管理安装clean-css

如何使用命令行

干净-CSS接受下列命令行参数,使用时请将需要优化的半铸钢钢性铸铁(铸造半钢)文件源文件放置到最后一个参数后面,避免遇到潜在的不可预想的问题。

cleanss[选项]源文件,[源文件,]

-h,-帮助输出使用信息

-v,-版本输出版本号

-b-保持换行-保持换行

-c,-兼容性[ie7|ie8]强制兼容模式(参见自述文件中的示例)

-d,-调试显示调试信息(缩小时间压缩效率)

-o,-输出[输出文件]使用[输出文件]代替标准输出作为输出

-r,-root[根路径]设置解析@导入规则的根路径

-s,-跳过-导入禁用@导入处理

-t,-暂停[秒]提取远程@导入时每个连接超时(默认为5秒)

-舍入-精度[n]舍入到小数点后" n "位。默认为2。-1禁用舍入

- s0删除所有特殊注释,即/*!注释*/

- s1删除除条注释之外的所有特殊注释

-语义合并-通过假设类似边界元的语义样式表来启用不安全模式(警告,这可能会破坏您的样式!)

-跳过-禁用优化-规则集重新排序合并

-跳过-积极合并-根据属性的顺序禁用属性合并

-跳过-导入-从[规则]禁用指定规则的@导入处理

-跳过-媒体合并-禁用@媒体合并

-跳过-重定基禁用网址重定基

-跳过重组-禁用重组优化

-跳过-速记-压缩禁用速记压缩

-源地图启用构建输入的源地图

-源地图内联-源启用源地图内联源

使用举例

将public.css文件缩小为public-min.css do:

清洁CSS-o公共-min。CSS公共。半铸钢钢性铸铁(Cast Semi-Steel)

要将相同的public.css缩小为标准输出,请跳过表示“具有…性质的”参数:

cleancss public.css

更有可能的是,您想要连接几个文件。如果您在类似Unix操作系统的system:上

一号猫。CSS二。CSS第三。CSS | clean CSS-o合并并缩小。半铸钢钢性铸铁(Cast Semi-Steel)

在窗口:上

键入一个。CSS二。CSS第三。CSS | clean CSS-o合并并缩小。半铸钢钢性铸铁(Cast Semi-Steel)

或者甚至一下子把结果压缩:

一号猫。CSS二。CSS第三。merged-minified-and-gzipped.css.gz

相关链接

开源代码库地址:https://github。com/jakupawlowicz/clean-CSS

基于的在线服务:

http://refresh-sf.com/

http://adamburgess.github.io/clean-css-online/

如何使用Clean-CSS API?

var clean CSS=require(' clean-CSS ');

var source=' a { font-weight : bold;}';

var minified=new CleanCSS().minify(来源)。风格;

CleanCSS构造函数接受一个哈希作为参数,即新的CleanCSS(选项)具有以下可用选项:

设置为错误的以禁用优化选择器属性合并、缩减等。

侵略性合并设置为错误的以禁用属性的侵略性合并。

基准开启基准模式,测量清理花费的时间(运行新公共管理运行工作台查看示例)

兼容性启用兼容性模式,更多示例见下文

调试设置为真实的以获取统计数据属性下的缩小统计信息(参见测试/自定义-test.js示例)

inliner一个@导入inliner选项的散列,参见test/protocol-imports-test.js获取示例,或者这个注释获取代理用例。

保留换行符是否保留换行符(默认值为假)

保留特殊注释*表示保留全部(默认),1表示仅保留个,0表示删除全部

媒体合并是否按规则合并@媒体(默认为真)

处理导入是否处理@导入规则

ProcessIMPORTFrom一个@导入规则列表,可以是['all'](默认),['local'],['remote'],或者黑名单路径,例如['!字体。谷歌api。' com ']

重设基础设置为错误的以跳过网址重设基础

相对路径解析相对@导入规则和网址的路径

重组设置为错误的以禁用优化中的重组

根解析@导入规则和基于相对统一资源定位器的路径

舍入精度舍入精度;默认为2;-1禁用舍入

语义合并设置为真实的以启用语义合并模式,该模式假设类似边界元的内容(默认值为假的,因为这很可能会破坏您的样式表请谨慎使用!)

shorthancompact设置为错误的以跳过速记压缩(默认为没错,除非sourceMap设置为false)

源映射在源映射属性下显示源映射,例如新的CleanCSS().minify(来源)。源映射(默认为假)如果输入样式是半铸钢钢性铸铁(Cast Semi-Steel)预处理器(少,萨斯)的产品,输入源映射可以作为字符串传递。

sourceMapinlineSources设置为真实的以在源映射的源内容字段内内联源(默认为false)它也是处理来自输入源映射的内联源所必需的。

目标文件夹或输出文件的路径,所有统一资源定位器都以此为基础

使变小方法的输出(或传递给回调的第二个参数)是一个包含以下字段的散列:

样式优化的字符串输出半铸钢钢性铸铁(Cast Semi-Steel)

源地图输出源地图(如果源地图选项要求)

错误引发的错误列表

警告引发的警告列表

统计统计信息的散列(如果使用调试选项请求):

原始大小原始内容大小(导入内嵌后)

迷你尺寸优化的内容大小

时间消耗用于优化的时间

效率——输出大小与输入大小的比率(例如,如果内容从100字节减少到75字节,则为25%)

如何处理通过@导入引入的文件?

为了内联远程@导入语句,您需要提供一个对使变小方法的回调,例如:

var clean CSS=require(' clean-CSS ');

var source=' @ import URL(http://path/to/remote/style);';

新的CleanCSS().minify(源,函数(错误,minified) {

//缩小。风格

});

这是因为,虽然本地文件可以同步读取,但远程资源只能异步处理。如果您不提供回调,那么远程@导入将保持不变。

如何保留注释块?

请使用/*!符号而不是标准的1/* :

/*!

缩小输出中包含的重要注释。

*/

如何改变相关的图像的URL?

在下列情况下,清洁-css将自动为您处理它(从1.1版开始)

使用CLI:时

使用经由-o/-输出的输出路径,将统一资源定位器作为相对于输出文件的基础。

通过-r/-根使用一个根路径,从给定的根路径将统一资源定位器重新设置为路径。

如果两者都指定,则-r/-根优先。

当使用clean-css作为库时:

相对基础使用相对和目标选项的组合(与命令行界面中的一相同)。

使用相对和根选项的组合作为基(与命令行界面中的2相同)。

在命令行界面中,根优先于目标。

如何生成源地图?

从3.0版开始支持源地图。

除了映射原始的半铸钢钢性铸铁(Cast Semi-Steel)文件,clean-css还支持输入源映射,因此缩小的样式可以直接映射到它们的较少的或厚颜无耻源。

源地图是使用浏览器名的源地图模块生成的。

使用命令行

要生成源映射,请使用-源地图开关,例如:

干净的CSS-源-映射-输出样式。量滴CSS风格。半铸钢钢性铸铁(Cast Semi-Steel)

输出文件的名称是必需的,因此需要一个映射文件,通过添加。可以创建输出文件名的映射后缀(在这种情况下是风格。量滴CSS。地图).

使用应用程序接口

要生成源映射,请使用源映射:真选项,例如:

新的CleanCSS({ sourceMap: true,target : path to outputdirectory })。minify(源,函数(错误,minified) {

//访问SourceMapGenerator对象的minified.sourceMap

//详见https://github.com/mozilla/source-map/#sourcemapgenerator

//参见https://github。com/jakupawlowicz/clean-CSS/blob/master/bin/clean CSS # L114关于如何在清理命令行界面中使用

});

使用应用编程接口,你也可以直接传递一个输入源映射

新的清理CSS({源映射:输入源emapassstring,目标:输出目录路径})。minify(源,函数(错误,minified) {

//访问minified.sourceMap访问SourceMapGenerator对象

//详见https://github.com/mozilla/source-map/#sourcemapgenerator

//参见https://github。com/jakupawlowicz/clean-CSS/blob/master/bin/clean CSS # L114关于如何在清理命令行界面中使用

});

或者甚至一次多个输入源映射(从3.1版本开始可用):

新的CleanCSS({ sourceMap: true,target : path to outputdirectory }).minify({

path/to/source/1': {

样式: '.样式.

sourceMap: '.源地图.

},

path/to/source/2': {

样式: '.样式.

sourceMap: '.源地图.

}

},函数(错误,缩小){

//如上访问minified.sourceMap

});

如何通过应用程序接口压缩多个文件?

通过传递数据

新的CleanCSS().minify(['path/to/file/one ',' path/to/file/two ']);

通过传递混杂

新的CleanCSS().minify({

路径/到/文件/one': {

样式:"文件一的内容"

},

path/to/file/two': {

样式:"文件二的内容"

}

});

如何设置兼容模式?

兼容性设置由-兼容性开关(命令行界面)和兼容性选项(库模式)控制。

在这两种模式下,允许下列值:

ie7’互联网浏览器7兼容模式

ie8’互联网浏览器8兼容模式

''或' * '(默认)Internet Explorer 9兼容模式

由于clean-css 3对这些设置有精细的控制,有以下选项可用:

[-]颜色。“不透明”打开()/关闭(-) rgba()/hsla()声明删除

[-]属性。背景剪辑合并'打开/关闭背景剪辑合并为速记

[-]属性。背景资料来源'--打开/关闭背景-起源合并成速记

[-]属性。背景尺寸合并'打开/关闭背景大小合并为速记

[-]属性。“颜色”打开/关闭任何颜色优化

[-]属性。“iebang hack”打开/关闭ieBangHack移除

[-]属性。ieprefixhack '打开/关闭工业管理学(Industrial Engineering)前缀黑客删除

[-]属性。‘iesuffixHack’打开/关闭工业管理学(Industrial Engineering)后缀砍移除

[-]属性。合并'根据可理解性打开/关闭属性合并

[-]属性。较短的长度单位打开/关闭将像素单位缩短为pc、pt或单位

[-]属性。space after closing branch'打开/关闭在右大括号后移除空格URL()-不重复进入网址()不重复

[-]属性。URL quotes'打开/关闭url()引用

[-]属性。零单位在0值后打开/关闭单位移除

[-]选择器。相邻空间'打开/关闭导航元素前的额外空间

[-]选择器。IE7黑客'打开/关闭IE7选择器砍移除(* html.)

[-]选择器。特殊'包含所有特殊的、不可合并的选择器的正则表达式(除非您知道自己在做什么,否则留空)

[-]个单位。ch’打开/关闭将荣誉勋爵视为合适的单位

[-]单位’打开/关闭将作为一个适当的单位处理

[-]个单位。‘PC’打开/关闭将个人电脑视为合适的单元

[-]个单位。“pt”打开/关闭将元素铂的符号视为一个合适的单元

[-]个单位。“rem”打开/关闭视雷姆为合适的单位

[-]个单位。“VH”打开/关闭将重链可变区视为一个合适的单元

[-]个单位。“VM”打开/关闭将伏特计视为适当的单元

[-]个单位。“VMAX”打开/关闭将威玛视为合适的单元

[-]个单位。vmin'打开/关闭将最小检定分度值视为适当的单元

例如,使用-兼容性' ie8,units.rem '将在启用雷姆单位的同时确保ie8的兼容性,因此以下样式margin:0px 0rem可以缩短为margin:0,而在纯IE8模式下则不能。

要在命令行界面中传递单个关闭(-)开关,请使用以下语法-兼容性*,-单位

在库模式下,您也可以将兼容性作为选项的散列来传递。

什么是压缩模式?

所有优化都在这里调度,这就是他们所做的:

递归优化块对一个块执行以下所有操作(想想@媒体或@ key key-at-rules);

递归优化属性通过将规则集和"平面规则"(如@font-face)拆分成组件(例如,将页边距拆分成页边距-(*))、优化和重新构建来优化规则集和"平面规则"中的属性。您可能希望使用shorthandCompacting选项来控制是否要将多个(长手)属性转换为速记属性;

删除重复删除具有完全相同的属性集的重复规则集(想想无缘无故包含两次相同的时髦/少部分);

合并相邻合并具有相同选择器或规则的相邻规则集;

减少不相邻识别哪些属性在相同选择器的不相邻规则集中被覆盖,并删除它们;

mergernonadjacentbyelector标识可移动的同选择器非相邻规则集(!)要合并,要求所有中间规则集不要重新定义已移动的属性,或者如果重新定义为更粗粒度(例如边距对页边距顶部)或具有相同的值;

mergernonadjancentbybody与上述相同,但规则相同,规则不相邻;

重组尝试重组不同选择器不同规则的规则集,以便它们占用更少的空间。一个{ padding:0 } .两个{margin:0} .一个{ margin-bottom :3 xx }进。两个{margin:0} .一个{ padd :0 margin-bottom :3 px };

移除重复的媒体查询移除重复的@ media at-rules;

合并媒体查询按照与上述合并不相邻的媒体*相同的规则合并不相邻的@媒体;

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航