Viết CSS hiệu quả hơn với Sass và Gulp (Phần 1)

I. Sass và Gulp là gì?

Nguyễn Đắc Sang
VTeam
4 min readJan 5, 2017

--

1. Sass

Sass là một CSS Pre-Processor (Tương tự Less, Stylus, …). Sass được sinh ra để giúp bạn viết CSS nhanh và rõ ràng mạch lạc hơn. Sass có 2 bộ syntax là Sass và SCSS

Sass Syntax
https://gist.github.com/dacsang97/deaf00291023f490789f9bfb2000029f
SCSS Syntax
https://gist.github.com/dacsang97/f65dd656ff2b0e648914fe9cf5014547

2 syntax này khác nhau là SASS thì dùng cấu trúc thụt dòng, còn SCSS thì có cách viết giống với CSS.
Trong series này mình sẽ hướng dẫn viết với syntax SCSS.

2. Gulp

Gulp là một task runner giúp chúng ta dễ dàng quản lí các static file như html, css, js, images, … tối ưu assets cho quá trình đóng gói sản phẩm. Trong series này, chúng ta sẽ sử dụng Gulp để compile SCSS sang CSS.

Config Gulp để viết SCSS.

Thiết lập môi trường và tạo project mới với npm init.
Bạn có thể xem lại bài viết trước đó tại đây

Cài đặt Gulp

Xác định cấu trúc thư mục cho project

img

Trong cấu trúc thư mục này thì folder app là nơi để chúng ta viết code, dist (viết tắt của distribution) là nơi chứa web sau khi đã hoàn thành và tối ưu xong.

II. Hello world với Gulp

1. Gulp task

Tạo file có tên là gulpfile.js nằm trong thư mục gốc của project (gulpfile.js ngang hang với thư mục app).
Gulpfile.js là file chứa các config và task của Gulp.

Đầu tiên luôn luôn phải nhớ require gulp để gọi gulp trong gulpfile.

Một gulp task sẽ có cấu trúc như sau:

Để chạy task thì trong terminal, gõ gulp task-name

2. Viết hello world

Tại terminal đang cd vào thư mục gốc của project, chạy gulp first-task
Xuất hiện dòng chữ Hello world là thành công :D

img

3. Xử lí file trong gulp task

Gulp Task có thể đọc file bên trong project thông qua lệnh gulp.src(‘file-nguon’). Kết quả trả về sẽ được lưu vào folder chứa trong lệnh gulp.dest(‘folder-ketqua’).
https://gist.github.com/dacsang97/777942f222e0dd749318145717b510b6

III. Viết Gulp task để compile SASS

Chúng ta có thể compile Sass bằng Gulp thông qua một plugin có tên là gulp-sass.

1. Cài đặt gulp-sass:

Require gulp-sass vào phía sau gulp bên trong gulpfile.js

2. Viết gulp task cho Sass

Dựa vào mẫu task ở phía trên, chúng ta có thể viết được task cho Gulp compile Sass như sau:
https://gist.github.com/dacsang97/29f47a284aa19576584ceb983d3c521a

Test xem task này có hoạt động hay không? Tạo file styles.scss bên trong app/scss có nội dung giống như phần đầu giới thiệu, ở đây chúng ta sử dụng syntax scss:
https://gist.github.com/dacsang97/f65dd656ff2b0e648914fe9cf5014547

Tại terminal gõ gulp sass để test thử.
Sau khi chạy xong bạn sẽ thu được kết quả như sau:

img

3.Tự động compile *.scss sang *.css khi code thay đổi.

Gulp cung cấp cho chúng ta một method có tên watch để đảm nhiệm công việc này. Dưới đây là syntax của gulp.watch() :

Có thể coi gulp.watch là một thằng hay soi mói và lắm chuyện, nó có thể “hóng chuyện” của nhiều file cùng một lúc :v.
Tạo task watch để bảo thằng gulp.watch phải focus vào hóng chuyện của SCSS.
https://gist.github.com/dacsang97/da060bc79d5bfdda48e172904f80cdea

Lại test thử xem thằng watch này có hoạt động ổn định hay không. Tại terminal gõ gulp watch.
Thay đổi thử nội dung trong file .scss xem file .css có tự update không?

img

Cảm ơn bạn đã đọc bài viết này.

SangNDVTeamVBlog

--

--