คำแนะนำใด ๆ สำหรับ CSS minifier? [ปิด]


289

คำแนะนำใด ๆ สำหรับ CSS minifier?

ฉันจะหยั่งรากรอบ ๆ Google และทดลองใช้งาน แต่ฉันสงสัยว่าชุมชน StackOverflow ที่ชาญฉลาดมีความเชี่ยวชาญและมีความอยากรู้อยากเห็นอาจประเมินข้อดีและข้อเสียของรุ่นใหญ่แล้ว



20
ถูกจับ ฉันอ่าน 'ทำอย่างไรให้เพื่อนและคนมีอิทธิพล' ไม่อย่างใกล้ชิดพอแม้ว่า
Paul D. Waite

17
พวกคุณทุกคนแปลก เราฉลาดเฉลียวและหล่อเหลา
Chuck Le Butt

2
ดูเพิ่มเติมที่: stackoverflow.com/q/65491/85414
mahalie

3
+1 เพียงเพื่อทำความเข้าใจ 'ธรรมชาติที่เปลี่ยนแปลง' ของสิ่งต่าง ๆ ที่นี่และทำความเข้าใจและอธิบายเหตุผลในการปิดคำถามแบบนี้ - แม้ว่าจะเป็นของคุณ! ;)
Andrew Barber เมื่อ

คำตอบ:


98

ยูอิคอมเพรสเซอร์เป็นที่ยอดเยี่ยม ใช้งานได้กับ JavaScript และ CSS ลองดูสิ


4
เพิ่มเข้าไปนี่คือ Makefile ซึ่งจะดาวน์โหลด YUI Compressor จัดเก็บไฟล์ของคุณและย่อขนาดให้เล็กลง github.com/balupton/jquery-sparkle/blob/…
balupton


@ JuniorMayhéฉันใช้มันและสไตล์ของฉันยุ่งเหยิงอย่างสมบูรณ์แม้ว่าฉันได้ตรวจสอบ "ลดขนาดเท่านั้นไม่มีการทำให้งอสัญลักษณ์" ตัวเลือก) ... น่าเศร้าทุก minifier ฉันพยายามแบ่งสไตล์ของฉัน เป็นเพราะตัวแปลงสัญญาณออนไลน์เป็นอึทั้งหมดหรือไม่ มันไม่ควรเป็นอย่างนั้น
dialex

1
@DiAlex ฉันเข้าใจว่าหลายคนยุ่งกับรหัสของเราเราต้องใช้มันอย่างระมัดระวังเลือกวิธี "อนุรักษ์นิยม" เสมอและไม่ใช่การกู้คืนแฟ็กเตอริ่งอีกครั้ง อนุรักษ์นิยมจะลบพื้นที่ที่ไม่จำเป็นออกเครื่องหมายอัฒภาคต่อท้ายสไตล์ที่ซ้ำกันและอื่น ๆ เท่านั้น ฉันคิดว่ารูปแบบอาจเสียหายได้ง่ายโดยตัวแปลงขนาดเล็กเหล่านี้หากเราใช้ css hacks ใน css code เครื่องหมายแบ็กสแลชและสัญลักษณ์ที่แปลกสามารถขับคอมเพรสเซอร์ได้อย่างบ้าคลั่ง
Junior Mayhé

คุณสามารถลองใช้บริการออนไลน์zbugs.com - มันใช้ yui compressor เพื่อย่อขนาดไฟล์ของคุณ
Tamik Soziev

45

นอกจากนี้ยังมี. NET พอร์ตของ YUI Compressorซึ่งช่วยให้คุณ: -

  • intergrate minification / file ที่รวมเข้าไปใน Visual Studio post-build events
  • รวมเข้ากับ TFS Build (รวมถึง CI)
  • หากคุณต้องการใช้ dll ในโค้ดของคุณเอง (เช่นในการลดขนาด)

อัพเดท 2011: และตอนนี้สามารถใช้งานได้ผ่าน NuGet แล้ว :)


ฉันสับสนเล็กน้อย YUI Compressor เลิกใช้แล้วในความโปรดปรานของUglifyJS ( สาธิต ) มันสมเหตุสมผลไหมที่จะทำงานบนพอร์ต. NET?
Martin Vseticka

เพื่อน ฉันเริ่มพอร์ตนั้นในปี 2008 หรือมากกว่านั้น นั่นเป็น 6 ปีที่ผ่านมาแปลก ฉันโพสต์คำตอบนี้ใน '09 ด้วย ดังนั้นโปรดตรวจสอบวันที่และรับบริบทก่อนที่คุณจะถามคำถามโง่ ๆ ตอนนี้ออกไปข้างนอกและเล่นเพื่อความสนุกสนาน :)
Pure.Krome

บริสุทธิ์ Krome: ฉันขอแตกต่างกันไป ฉันได้ดู repo ของ GitHub และมันมีอายุเพียงไม่กี่เดือนและคอมมิชชันมาจากปีนี้ นั่นเป็นเหตุผลที่ฉันถาม "Mate"
Martin Vseticka

: clap ช้า: ด่างดี! ที่จริงแล้วคุณเพลีย --- โอ้ รอ. ผมเริ่ม Proj ใน CodePlex นี้: yuicompressor.codeplex.com เริ่มใช้งานครั้งแรก 7 กรกฎาคม 2008 ( yuicompressor.codeplex.com/SourceControl/changeset/… ) จากนั้นย้ายไปที่ GH ในปีนี้ ฉันไม่ได้ทำงานเกี่ยวกับการย้ายพอร์ตเป็นเวลานาน มีการแก้ไขข้อผิดพลาดเพียงเล็กน้อยที่นี่และที่นั่น ดังนั้น. เพื่อน. ฉันพอร์ตEDมัน ไม่พอร์ตไอเอ็นจีมัน อยู่ในโหมดบำรุงรักษา QED
Pure.Krome

1
คุณด้วย :) และขอขอบคุณลิงก์ไปยัง UglifyJS - นั่นเป็นสิ่งที่ฉันตั้งใจจะตรวจสอบเพื่อดูว่าเราสามารถใช้ที่ทำงานได้หรือไม่และคุณเพิ่งเตือนเราเกี่ยวกับเรื่องนี้! ไชโย :)
Pure.Krome

19

ฉันชอบลดขนาด ใน PHP และทำงานกับ CSS หรือ JavaScript


2
+1 สำหรับ Minify หากคุณคุ้นเคยกับ PHP อยู่แล้วคุณอาจจะรู้สึกสบายใจที่จะติดตั้งมัน ต้องการ PHP5 เมื่อคุณตั้งค่าแล้วคุณสามารถลืมมันได้ทำงานตามปกติในไฟล์ css หรือ js ที่มีระยะห่างสูงสุดและให้ความเห็นตามที่คุณต้องการและย่อขนาดจะย่อขนาดให้เล็กลง
mahalie

13

CSSOเป็น minifier / optimizer ที่ดีที่สุด


2
Dunno เกี่ยวกับ“ ดีที่สุด” แต่คุ้มค่าที่จะดู
Paul D. Waite

ลองใช้แล้วคุณจะพบว่าดีที่สุด ไม่มี analogs สำหรับเทคนิคการลดทอนสำหรับช่วงเวลานี้เท่าที่ฉันรู้
เงียบ

1
ไม่เป็นไรฉันได้เปรียบเทียบ CSSO กับ YUI Compressor กับไฟล์ทดสอบ 30 KB และหลังจากบีบเอาท์พุทที่บีบอัดของเครื่องมือทั้งสองแล้ว CSSO ก็ชนะการบีบอัดไฟล์นี้เพิ่มอีก 7 ไบต์ นั่นเป็นเพียงไฟล์ทดสอบหนึ่งไฟล์แน่นอน
Paul D. Waite

ลด CSS ออนไลน์ด้วย CSSO: css.github.io/csso/csso.html
tomByrer

อย่างน้อยก็เป็นหนึ่งในสองที่แนะนำโดยGoogle PageSpeed Insights
Alex Vang

8

ถ้าคุณใช้ Python ฉันขอแนะนำslimmerซึ่งอาจไม่เร็วเท่ากับ YUI Compressor แต่ต่างจาก csscompressor.net จะไม่ทำให้หายใจไม่ออกบน CSS

ฉันลำเอียงเพราะฉันเขียนให้ผอมลงและตอนนี้ฉันกำลังประเมิน YUI Compressor เพื่อดูว่ามันจัดการกับแฮ็กได้อย่างไร ตัวอย่างของ slimmer in action สามารถเห็นได้หากคุณดูแหล่งที่มาของ crosstips.org


6

ลองใช้ CSSTidy: http://csstidy.sourceforge.net/usage.php

และออนไลน์ได้ที่: http://cdburnerxp.se/cssparse/css_optimiser.php


นี่คือสิ่งที่ดีที่สุด. ขอบคุณ
FDisk

เวอร์ชันออนไลน์ที่ได้รับการแก้ไขซึ่งรองรับ CSS3 มีให้ที่devilo.us
rafleo

6

หากคุณกำลังมองหาเครื่องมือออนไลน์ลองใช้สิ่งนี้: https://csscompressor.net/


1
ฉันหวังว่าฉันจะลงคะแนนคำตอบนี้ (มันสายเกินไปแล้วหลังจากฉัน upvoted มัน) ฉันพยายามบีบอัดไฟล์ css และแบ่งสิ่ง นั่นไม่ดีเลย เตือนให้ทุกคนออกไปที่นั่นฉันเดาว่าถ้าคุณไม่มีมาตรฐานอันบริสุทธิ์ css มันอาจทำให้คุณแย่ลง!
BT

19
แต่คุณไม่ควร มี CSS เก่าแก่หรือเปล่า?
Chuck Le Butt

2
หากคุณกำลังใช้งานแผ่นสำเร็จรูป HTML5, ไม่
SkaveRat

เครื่องมือที่ดี ฉันได้ทำการทดสอบแล้วhtml{width:100%;height:100%;} body{width:100%;height:100%;padding:0;} #test{padding:1em;width:10em;} #test{padding:2em;}และมันก็ทำงานได้ดีกว่า YUI Compressor (ซึ่งไม่ได้กำจัดรายการที่ซ้ำกันสำหรับการแพ็ด # ทดสอบ) ถึงกระนั้นทั้งสองก็ไม่สามารถทำให้ฉันพอใจได้html,body{width:100%;height:100%}body{padding:0}(ซึ่งในความเข้าใจของฉันนั้นเทียบเท่ากันเนื่องจากตัวเลือกทั้งสองมีความเฉพาะเจาะจงเหมือนกัน)
drdaeman

CSS เป็นสิ่งหนึ่งที่บางครั้งการแฮ็คเส็งเคร็งเป็นที่ยอมรับ แฮ็กเหล่านี้บางส่วนใช้เทคนิคการแสดงความคิดเห็นแปลก ๆ ที่ minifiction สามารถทำลายได้
แบรนดอน

4

ฉันได้เขียน minifier CSS ที่เร็วเป็นพิเศษใน C # อัลกอริทึมไม่ได้จัดการ Javascript แม้ว่า พระองค์นี้: http://www.ko-sw.com/Blog/post/An-Ultra-Fast-CSS-Minify-Algorithm.aspx


ตัวเลือกที่ดูดี แม้ว่าเคียวรี่หนึ่งรายการ: คุณพูดว่า“ ตามข้อกำหนด CSS แล้วมีการสนับสนุนสตริงสองประเภท: การเสนอราคาเดียวและเสนอราคาสองครั้ง อัลกอริทึมของฉันทำให้สตริงไม่เสียหายแม้ว่าจะพบอักขระช่องว่างอยู่ข้างใน ... ฉันแค่คิดว่าการทำให้สตริงไม่แปรเปลี่ยนนั้นง่ายและเป็นมืออาชีพมากกว่า” แน่นอนว่าควรลบอักขระเว้นวรรคที่ไม่เพิ่มความหมายเพื่อให้ไฟล์เอาต์พุตมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้? นั่นคือประเด็นของการลดขนาดหรือไม่?
Paul D. Waite

3
ในความคิดของฉันนี่แน่นอนในกรณีทั่วไป แต่ฉันคิดว่าสตริงเป็นกรณีพิเศษ มันขึ้นอยู่กับนักพัฒนาของ CSS ดั้งเดิมว่าจะลบช่องว่างที่ไม่มีความหมายออกจากสตริงหรือไม่ อัลกอริทึมที่ฉันแสดงนั้นเป็นไปตามข้อกำหนดที่ทำให้สตริงไม่ได้แก้ไข
Kerido

4

ลองปิด-สไตล์ชีต

ข้างminificationนอกจากนี้ยังสนับสนุนlinting , RTL พลิกและเปลี่ยนชื่อชั้น

นอกจากนี้ยังสามารถเพิ่มตัวแปร , ฟังก์ชั่น , เงื่อนไขและmixinsเพื่อ CSS

นอกจากนี้โปรดทราบว่าคุณลักษณะเหล่านี้บางอย่างขึ้นอยู่กับส่วนที่เหลือของเครื่องมือปิด (ซึ่งมีประสิทธิภาพมากด้วยตนเอง)


คุณใช้บน windows ได้อย่างไร ยกโทษให้ความไม่รู้ของฉัน
user2513846

3

หากคุณกำลังมองหาบางอย่างใน PHP นี่คือลิงค์: -

ลดไขมันฟรี

แม้ว่ามันจะเป็นส่วนหนึ่งของ PHP Fat-Free Framework แต่ก็สามารถใช้แบบสแตนด์อะโลนได้


Fat Free Framework คือ GPL และฉันคิดว่าส่วนนี้ของรหัสของพวกเขาก็เช่นกัน หัวอัพ
CodeReaper

มันมีข้อบกพร่อง: S ความคิดที่ไม่ดี
brunoais

3

ฉันพบว่าCSS SuperScrubของ isnoop ทำงานได้ดีมาก มันสามารถจัดการลิงค์โดยตรงไปยัง CSS ออนไลน์ได้แม้ว่า: / คุณสามารถแก้ไขได้โดยใช้บริการ pastebin ที่คุณต้องการเพื่อเก็บรหัส css และเพียงแค่ให้ SuperScrub ลิงก์ดิบ


ฉันลองแล้ว#test { padding: 1em; width: 10em; } #test { padding: 2em; }และมันก็ล้มเหลว
drdaeman

@drdaeman อาจเป็นเพราะไม่รู้ว่าจะทำอย่างไรกับค่าที่ขัดแย้ง / ซ้ำกันสำหรับตัวเลือกที่กำหนด เนื่องจากฉันไม่ดูแล SuperScrub ฉันไม่สามารถบอกคุณได้ว่าจะแก้ไขหรือไม่เมื่อใด
John Michel

3

หากเว็บไซต์ของคุณอยู่ใน ASP.NET คุณสามารถปล่อยให้ไซต์ของคุณทำการลดขนาด CSS ได้อย่างรวดเร็ว (ดังนั้นคุณไม่จำเป็นต้องทำด้วยตนเองทุกครั้งที่คุณทำการเปลี่ยนแปลง) ตัวอย่างเช่นนี้:

http://www.codeproject.com/KB/aspnet/CombineAndMinify.aspx



3

คนอื่น ๆ ได้พูดถึง YUI Compressor จากนั้นพอร์ต. NET ของมันและฉันจะเพิ่มลิงค์อื่นไปยังเชน StyleManagerเป็นตัวควบคุมเซิร์ฟเวอร์ที่ตัดค่า. NET พอร์ตของ YUI Compressor เพื่อให้คุณสามารถใช้งานได้เหมือนกับที่คุณคุ้นเคยกับการใช้ ScriptManager มันเพิ่มคุณสมบัติที่ดีอื่น ๆ อีกมากมายเช่นค่าคงที่ CSS, ความคมชัดของ tilde (~) ที่มีในคำจำกัดความภาพพื้นหลังของคุณ ฯลฯ ฯลฯ มันแน่นมีเอกสารที่ดีและฉันใช้มันกับโปรเจคล่าสุดของฉันด้วย o ปัญหา ลองดู - gStyleManager.com


3

ยังคง "เป็นเบต้า" แต่ควรทำงานได้ดีพอสมควร ฉันใช้รหัสที่อยู่เบื้องหลังมันในทุกโครงการ: http://claudiu.phpfogapp.com/มันสร้างขึ้นใน PHP และยังโฮสต์ไฟล์ * .css ของคุณไว้เป็นระยะเวลานานพอที่จะให้คุณทดสอบโค้ดของคุณด้วย css ที่ย่อ (ฉันจะลบไฟล์ css เก่าเท่านั้นหากพื้นที่มีผู้คนหนาแน่นบนเซิร์ฟเวอร์)


2

มีโปรเจ็กต์ codeplex ที่จะเชื่อมต่อกับเว็บไซต์. net ที่จะย่อขนาดและบีบอัด CSS และไฟล์ JS นอกจากนี้ยังมีการเปรียบเทียบระหว่าง Microsoft AJAX Minifier กับ YUI Compressor ซึ่งแสดงว่า YUI ออกมาดีกว่าเล็กน้อย มีรูปแบบพิเศษซึ่งรวม Microsoft Minifier และการบีบอัดที่รุนแรง srunk ไฟล์

อย่างไรก็ตามการเชื่อมโยงคือ http://xpedite.codeplex.com/wikipage?title=Minifier%20(CSS%2FJavaScript%20Minification%20Handlers )


2

นี่คือวิธีที่ฉันทำกับ MVC3: http://mkramar.blogspot.com/2011/08/css-and-javascript-minify-and-combine.html ความงามของวิธีการนี้คือทั้งหมดที่ทำได้ทันที และคุณไม่จำเป็นต้องประมวลผลไฟล์ล่วงหน้าด้วยตนเองหรือกำหนดค่าโพสต์บิลด์


2

เครื่องมือออนไลน์ (ดีกว่า www.csscompressor.net ซึ่งเป็นแม่แบบ css ของฉัน): http://www.cssdrive.com/compressor/compress.phpทำได้ดีมาก


มีข้อบกพร่อง ในสถานการณ์ที่เฉพาะเจาะจงมันจะทำลายรหัส js ที่ดีอย่างสมบูรณ์
brunoais

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*", ";");

1

zbugs.comจะเป็นเครื่องมือออนไลน์ที่ดีสำหรับคุณมันจะลดขนาด css ของคุณในคลิกเดียว


แน่นอนแม้ว่าฉันไม่คิดว่ามีตัวขยายจำนวนมากที่ต้องใช้การคลิกมากกว่าหนึ่งครั้งเพื่อเริ่มต้น
Paul D. Waite

คุณพูดถูกพอล :) แต่อันนี้ทำอะไรได้มากกว่านี้อีกแล้วเพียงแค่ลดขนาดและทั้งหมดในคลิกเดียว
Tamik Soziev

1

ดูHTML5BoilerPlateล่าสุดโดย Paul Irish - มีสคริปต์สร้างเพื่อย่อเนื้อหาทั้งหมดของคุณ (รวมถึง PNG และ JPG) คุณสามารถดูวิดีโอสาธิตที่นี่


2
แน่นอนว่า; CSS minifier นั้นเป็น YUI Compressor
Paul D. Waite
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.