CSS tự động tree-shake: Purge CSS không dùng với PostCSS

Một trong những nguyên nhân khiến website tải chậm là file CSS chứa hàng trăm hoặc hàng ngàn dòng không được sử dụng. Kỹ thuật tree-shaking CSS – hay còn gọi là CSS Purge – giúp tự động loại bỏ những dòng CSS dư thừa, chỉ giữ lại các class và selector thực sự dùng trên giao diện.

CSS tự động tree-shake: Purge CSS không dùng với PostCSS

Điều thú vị là bạn có thể làm điều này mà không cần dùng Tailwind hay framework nào, chỉ với PostCSS!

1. Tree-shaking là gì trong CSS?

  • Tự động loại bỏ các class không được sử dụng trong HTML/JS
  • Giữ lại đúng các dòng CSS cần thiết giúp giảm kích thước đáng kể
  • Rất phù hợp cho theme WordPress nhẹ, SPA tĩnh, landing page

2. Cài đặt công cụ

Bạn cần Node.js và PostCSS. Sau đó cài thêm plugin postcss-purgecss:

npm install postcss postcss-cli @fullhuman/postcss-purgecss --save-dev

3. Cấu hình PostCSS với purge

Tạo file postcss.config.js trong thư mục dự án:

const purgecss = require('@fullhuman/postcss-purgecss');

module.exports = {
  plugins: [
    purgecss({
      content: ['./**/*.html', './**/*.php', './**/*.js'],
      safelist: [/^uk-/, /^is-/, 'show'], // giữ lại class động hoặc từ framework
    }),
  ]
};

Lưu ý: Nếu bạn dùng UIKit hoặc Bootstrap, hãy thêm các prefix của chúng vào safelist để tránh bị xóa nhầm.

4. Dùng CLI để xử lý file CSS

Chạy lệnh sau để lọc CSS không dùng:

npx postcss src/style.css -o dist/style.min.css

Kết quả: style.min.css sẽ nhỏ gọn hơn rất nhiều, chỉ giữ lại các dòng thực sự dùng trong các file HTML/PHP/JS.

5. Tích hợp vào quy trình build

Nếu bạn đã có script build SCSS/CSS, có thể thêm bước tree-shake CSS vào cuối bằng CLI hoặc trong package.json:

"scripts": {
  "build-css": "sass style.scss | postcss -o style.min.css"
}

6. So sánh hiệu quả

Trước khi Purge Sau khi Purge Tỉ lệ giảm
280 KB 29 KB ~90%
120 KB 17 KB ~85%

Kết luận

Việc tree-shake CSS bằng PostCSS và plugin purgecss giúp bạn tự động loại bỏ toàn bộ class CSS không được dùng mà không cần framework cụ thể. Đây là bước tối ưu cực kỳ cần thiết cho mọi website hiện đại, đặc biệt khi kết hợp với UI framework như UIKit, Bootstrap hoặc theme tự viết.

Tip: Nếu dùng WordPress, bạn có thể tích hợp bước build này vào quá trình deploy lên VPS hoặc build theme thủ công qua script.

Bình luận


  • Không có bình luận.