Webpack từ A đến Á: Webpack Sass Loader (ok)
https://kentrung256.blogspot.com/2020/10/webpack-sass-loader.html
Webpack từ A đến Á: Webpack Sass Loader
October 02, 2020 webpackTrong bài trước chúng ta đã biết cách thiết lập Webpack để load css trong ứng dụng của bạn thông qua style-loader và css-loader. Bài hôm nay chúng ta sẽ học cách chuyển scss thành css thông qua sass-loader
Nội dung chính
1. Chuẩn bị file
2. Webpack sass-loader
3. Option outputStyle
4. Option source map
1. Chuẩn bị file
Code file dist/index.html
Trong folder src ta tạo các file scss
theo cấu trúc bên dưới
Code file src/scss/colors.scss
Code file src/scss/style.scss
Code file src/index.js
gọi file style.scss ở trên vào
Vậy là xong phần chuẩn bị, phần tiếp theo chúng ta bắt đầu tìm hiểu về sass-loader là gì?
2. Webpack sass-loader
sass-loader
giúp chúng ta compile (biên dịch) file scss sang css. Để sử dụng chúng ta phải cài đặt nó thông qua npm (lưu ý là chúng ta phải cài thêm cả node-sass
)
Sau khi cài đặt xong chúng ta chỉnh sửa lại cấu hình file webpack.config.js
Đoạn code trên có ý nghĩa là tạo ra rule (quy tắc) để test tất cả các file có đuôi là sass hoặc scss. Nó sử dụng sass-loader để chuyển scss thành css thường, sau đó css-loader chuyển css ở trên thành css in js, sau đó đến style-loader xác định vị trí sẽ chèn vào trong file html.
Thế là xong phần cấu hình giờ chúng ta chạy webpack xem thế nào: npm run dev
Khi chạy xong câu lệnh trên, giờ chúng ta chạy file dist/index.html
và xem code trong F12
Ta thấy phần code scss đã được chuyển thành css và tự động thêm vào trang html thông qua thẻ style trong khối head. Thật là vi diệu!
3. Option outputStyle
Theo mặc định thì webpack sẽ chuyển scss sang css theo kiểu compressed
tức là code css đã được viết gộp lại thành một dòng như này
Ngoài kiểu này ra chúng ta còn kiểu khác đó là expanded
. Sửa lại file webpack.config.js
như sau
Và đây là css khi được outputStyle kiểu expanded
Thực ra về kiểu outputStyle này thì có tận bốn kiểu là: nested, expanded, compact, compressed nhưng mình thử với hai kiểu nested và compact thì lại bị báo không hỗ trợ. Dù sao thì mình cũng chủ yếu dùng kiểu compressed mặc định cho nhẹ nên không cần quan tâm lắm mấy kiểu output kia. Các bạn muốn tìm hiểu kĩ hơn thì có thể search google xem lí do tại sao không được nhé.
4. Option source map
Với cấu hình ở trên thì có một vấn đề xảy ra là làm sao biết được css đang tác động nó ở dòng nào, file nào. Giờ chúng ta chạy dist/index.html
và tìm thử thẻ h1 đang nhận css như thế nào.
Khi debug css thì nó chỉ tới chỗ style trong khối head. Chúng ta không biết được thực sự nó là dòng bao nhiêu cả, việc sửa css sẽ mất rất nhiều thời gian, bực mình khó chịu. Sửa css đã khổ giờ lại sửa theo kiểu scss để tìm đúng vị trí của nó càng khổ hơn. Thấu hiểu điều đó webpack cũng cung cấp chế độ source map nhằm giúp chúng ta dễ dàng debug hơn. Ta sửa lại file webpack.config.js
Giờ chúng ta chạy lại dist/index.html
và tìm thử thẻ h1 đang nhận css như thế nào.
Quả thật với cấu hình này việc sửa css đã sướng hơn rất nhiều cho các css-er ^^ Còn rất nhiều option khác của sass-loader mà mình không nói hết được.
Bài viết đến đây là hết, hi vọng với bài viết này các bạn đã thêm được nhiều kiến thức bổ ích. Hẹn gặp lại các bạn ở bài viết tiếp theo.
Last updated