对CSS缩小器有什么建议吗?[关闭]


289

对CSS缩小器有什么建议吗?

我将扎根Google并尝试一些方法,但是我怀疑聪明,精通和好奇的StackOverflow社区可能已经评估了重量级的优缺点。



20
没了 我一直在阅读“如何结交朋友并影响人们”。虽然还不够紧密
Paul D. Waite,2009年

17
你们都很奇怪 我们很聪明,精通,而且很好奇。
Chuck Le Butt 2010年


3
+1只是为了了解这里周围事物的“变化性质”,并理解和解释解决此类问题的原因-即使是您本人!;)
Andrew Barber 2013年

Answers:


98

锐压缩机是太棒了。它适用于JavaScript和CSS。一探究竟。


4
除此之外,这里还有一个Makefile,它将下载YUI Compressor,打包文件并缩小它们。github.com/balupton/jquery-sparkle/blob/...
balupton


@JuniorMayhé我使用了它,尽管我勾选了“仅缩小,没有符号混淆”,但是我的样式完全混乱了。选项)...可悲的是,我尝试的每个缩小器总是会破坏我的风格。是因为在线矿工全都是废话吗?不应该这样。
Dialex 2012年

1
@DiAlex我了解其中许多内容使我们的代码混乱,我们必须谨慎使用它们,始终选择“保守”方法,而不要进行积极的重构。保守派只会删除不必要的空格,结尾的分号,重复的样式等等。我认为,如果我们在CSS代码中使用某些CSS hacks,这些缩小器很容易损坏样式。反斜杠和怪异的符号可能会使压缩机疯狂。
少年梅耶

您可以尝试在线服务zbugs.com-它使用yui压缩程序来缩小您的文件。
塔米克·索齐耶夫

45

还有一个YUI Compressor的.NET端口,您可以:-

  • 将缩小/文件集成到Visual Studio生成后事件中
  • 集成到TFS Build(包括CI)中
  • 如果您只想在自己的代码中使用dll(例如,即时压缩)。

2011年更新:并且现在也可以通过NuGet获得 :)


我有点困惑。YUI压缩机被弃用赞成UglifyJS演示)。在.NET端口上工作有意义吗?
Martin Vseticka 2014年

伴侣。我在2008年左右开始使用该端口。那是6年前。我也在09年发布了此答案。因此,在询问傻q之前,请检查日期并获得一些上下文信息。现在,到外面去玩一下:)
Pure.Krome 2014年

Pure.Krome:我希望有所不同。我看过GitHub仓库,它已有几个月的历史了,提交时间是今年。这就是为什么我问。“伴侣”。
Martin Vseticka 2014年

:拍手慢:发现得很好!您实际上是严厉的---哦。等待。我在codeplex上启动了项目:yuicompressor.codeplex.com。首次提交于2008年7月7日(yuicompressor.codeplex.com/SourceControl/changeset/…)。然后今年将其移至GH 。我已经很长时间没有进行任何移植工作了。到处只有几处奇怪的错误修复。所以。杜德 I端口ED它。没有港口荷兰国际集团它。它处于维护模式。QED
Pure.Krome 2014年

1
您也:)也很高兴获得UglifyJS的链接-这就是我一直想检查出我们是否可以在工作中使用它的意思-而您刚刚提醒我们!欢呼声:)
Pure.Krome 2014年

19

我喜欢Minify。在PHP中,可与CSS或JavaScript一起使用。


2
+1代表缩小。如果您已经熟悉PHP,则可能会更舒适地安装它。需要PHP5。设置完毕后,您就可以忘了它,您可以根据需要在许多超空白和带注释的css或js文件中正常工作,并且缩小后会即时对其进行压缩。
mahalie 2011年

13

CSSO是当前最佳的优化器/优化器。


2
Dunno谈到“最好的”,但值得一看。
Paul D. Waite,

尝试一下,您会发现它是最好的。据我所知,此刻的缩小技术尚无类似产品。
沉默

1
好吧,我在30 KB的测试文件中将CSSO与YUI Compressor进行了比较,并且在将这两个工具的压缩输出进行gzip压缩后,CSSO获胜,将文件压缩了额外的7个字节。当然,那只是一个测试文件。
Paul D. Waite,

使用CSSO在线减少CSS:css.github.io/csso/csso.html
toBByrer 2013年

至少它是Google PageSpeed Insights推荐的两个之一。
Alex Vang

8

如果您使用Python,我建议您使用苗条的修身笔,它的速度可能不及YUI Compressor快,但与csscompressor.net不同的是,它不会使CSS hack窒息。

自从我写得更苗条以来,我一直抱有偏见,而我目前正在评估YUI Compressor,以了解它如何处理黑客。如果您查看crosstips.org的源代码,可以看到一个苗条的例子



6

如果您正在寻找在线工具,请尝试以下操作:https : //csscompressor.net/


1
我希望我可以否决这个答案(我投票赞成后已经太晚了)。我正在尝试压缩CSS,这会破坏事情。那根本不好。向那里的所有人发出警告,我想除非您拥有符合原始标准的CSS,否则它可能会破坏您的狗屎!
英国电信

19
但是, 应该拥有原始的,符合标准的CSS吗?
Chuck Le Butt 2010年

2
如果您使用的是HTML5样板,则不会。
SkaveRat 2011年

不错的工具。我已经对其进行了测试html{width:100%;height:100%;} body{width:100%;height:100%;padding:0;} #test{padding:1em;width:10em;} #test{padding:2em;},它比YUI Compressor(没有消除#test的填充重复项)做得更好。但是,两者都未能令我满意html,body{width:100%;height:100%}body{padding:0}(据我所知,这是等效的,因为两个选择器都具有相同的特异性)。
drdaeman 2011年

CSS是有时可以接受cr脚的骇客的一件事。其中一些黑客使用怪异的注释技巧,这些伪造可以破坏。
布兰登

4

我用C#编写了一个超快速的CSS压缩程序。该算法虽然不能处理Javascript。你这样子:http : //www.ko-sw.com/Blog/post/An-Ultra-Fast-CSS-Minify-Algorithm.aspx


漂亮的选择。但是,有一个查询:您说“根据CSS规范,支持两种类型的字符串:单引号和双引号。即使在字符串中找到空格字符,我的算法也不会影响字符串的完整性。我只是认为不修改字符串就更直观,更专业。” 当然,应该删除任何不增加含义的空格字符,以使输出文件尽可能小?这不是缩小点吗?
Paul D. Waite,2010年

3
好吧,我认为这在一般情况下肯定是正确的。但是我认为字符串是一种特殊情况。是否从字符串中删除无意义的空格取决于原始CSS的开发人员。我要显示的算法仅遵循规范,不更改字符串。
Kerido


3

如果您正在寻找PHP的东西,这里是链接:-

无脂小巧

尽管它是PHP Fat-Free框架的一部分,但也可以独立使用。


Fat Free Framework是GPL,因此我认为他们的代码的这一部分也是。只是抬头。
CodeReaper 2012年

它有错误:S不好的主意。
brunoais 2012年

3

我发现isoop的CSS SuperScrub效果很好。但是,它只能在线处理到CSS的直接链接://通过使用首选的pastebin服务来保存CSS代码并仅给SuperScrub原始链接,就可以解决此问题。


我试过了#test { padding: 1em; width: 10em; } #test { padding: 2em; },但失败了。
drdaeman 2011年

@drdaeman这可能是因为它不知道如何处理给定选择器的冲突/重复值。由于我不维护SuperScrub,因此无法告诉您何时或是否可以解决该问题。
约翰·米歇尔



3

其他人提到过YUI Compressor,然后是它的.NET端口,我将在链中添加另一个链接。StyleManager是一个服务器控件,它包装了YUI Compressor的.NET端口,因此您可以像习惯使用ScriptManager一样使用它。它还添加了许多其他不错的功能,例如CSS常量,在背景图像定义中带有波浪号(〜)的分辨率等。它非常紧凑,有据可查,并且我在最近的所有项目中都使用了该功能。 o一个问题。-gStyleManager.com


3

仍处于“测试阶段”,但效果应该不错。我在每个项目中都使用其背后的代码:http : //claudiu.phpfogapp.com/它是PHP内置的,并且还会在相当长的时间内托管* .css文件,这肯定足以让您使用缩小的CSS。(如果空间在服务器上变得拥挤,我只会删除旧的CSS文件)。





1

C#示例:

css = css.Replace("\n", "");
css = Regex.Replace(css, @"\s+", " ");
css = Regex.Replace(css, @"\s*:\s*", ":");
css = Regex.Replace(css, @"\s*\,\s*", ",");
css = Regex.Replace(css, @"\s*\{\s*", "{");
css = Regex.Replace(css, @"\s*\}\s*", "}");
css = Regex.Replace(css, @"\s*\;\s*", ";");


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.