Một trong những điều đầu tiên bạn cần cấu hình trong dự án webpack của mình là CSS. CSS rất cơ bản đối với một ứng dụng web — hầu như tất cả các ứng dụng web đều cần nó. Nhưng việc định cấu hình webpack rất phức tạp. Và nếu bạn muốn các mô-đun CSS và CSS, điều đó có thể còn khó hiểu hơn nữa. Trong bài viết này, tôi sắp xếp tất cả cho bạn
Bạn sẽ học được những điều sau đây trong bài đăng này
- Cách định cấu hình CSS cơ bản trong dự án webpack bằng
0 vàmodule: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] }
1module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] }
- Cách trích xuất CSS thành tệp
2 của chính nómodule: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] }
- Cách định cấu hình các mô-đun CSS với webpack
- Cách định cấu hình cả mô-đun CSS và CSS
Hãy bắt đầu cấu hình CSS. Tôi cho rằng bạn đã thiết lập một dự án webpack. Nếu không, hãy xem createapp. nhà phát triển để tạo bản soạn sẵn gói webpack tùy chỉnh của riêng bạn
Tạo tệp CSS và tham chiếu nó
Trước khi chúng tôi định cấu hình hỗ trợ CSS trong thiết lập webpack, trước tiên hãy thêm tệp CSS và sử dụng nó
Điều đầu tiên chúng ta sẽ làm là thêm một tệp
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
3 vào dự án. Hãy đặt nó vào thư mục module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
4body {
color: white;
background-color: black;
}
Tệp CSS này tạo nền đen và màu chữ trắng. Điều này cho thấy rõ nó có hoạt động hay không - nếu nó hoạt động thì toàn bộ trang sẽ có màu đen
Điều tiếp theo cần làm là nhập nó. Chúng ta sẽ thực hiện việc này từ một tệp JavaScript vì theo mặc định, webpack đặt CSS bên trong gói, điều đó có nghĩa là chúng ta phải tham chiếu nó từ một tệp JavaScript khác [chúng ta sẽ xem xét cách trích xuất CSS sang tệp của chính nó sau trong hướng dẫn này]
Đặt cái này vào tệp
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
5 của bạnCấu hình webpack css-loader và style-loader
Để có thể sử dụng CSS trong ứng dụng webpack của bạn, bạn cần thiết lập một. Gói ngoài hộp, webpack chỉ hiểu Javascript và JSON. Với trình tải, bạn có thể dịch một loại tệp khác sang định dạng mà webpack hiểu và có thể hoạt động với
Có nhiều trình tải webpack và mỗi trình tải có một mục đích cụ thể. Bạn cần hai trình tải để hỗ trợ CSS trong ứng dụng của mình.
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 và module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0. Hãy xem cách chúng ta có thể cấu hình module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 và module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0 trong webpackBạn thiết lập trình tải với từ khóa
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
10 trong module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
11 của mìnhĐây là cách bạn định cấu hình CSS trong
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
11 của mình module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
Từ khóa
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
13 cho webpack biết loại tệp nào nên sử dụng trình tải này. Từ khóa module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
14 cho webpack biết trình tải nào sẽ được chạy cho các tệp nàyNhư bạn có thể thấy trong phần cấu hình, bạn cần sử dụng hai bộ tải,
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0 và module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1. Bạn cũng cần cài đặt chúng dưới dạng phụ thuộc NPM module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1css-loader và style-loader làm gì?
Trình tải chỉ là các hàm JavaScript thuần túy. họ lấy một số dữ liệu làm đầu vào và thực hiện điều gì đó với dữ liệu đó và trả về một phiên bản đã chuyển đổi của dữ liệu. Khi bạn sử dụng hai bộ tải trong webpack thì nó sẽ lấy đầu ra của cái đầu tiên và gửi nó làm đầu vào cho cái thứ hai. Trong ví dụ của chúng tôi, nó lấy tệp CSS và chạy nó qua
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1, sau đó nó lấy đầu ra và chạy nó làm đầu vào cho module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0Hãy xem những gì bộ nạp làm
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 đọc CSS từ tệp CSS và trả về CSS với module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
30 và module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
31 được giải quyết chính xác. Điều đó nghĩa là gì? . Giả sử bạn có một module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
32 trong CSS tham chiếu đến một tài nguyên khác, chẳng hạn như một hình ảnh module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
3Trong ví dụ này, chúng tôi tham khảo
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
33 từ CSS. Khi module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 nhìn thấy dòng này, nó sẽ báo cho webpack tải tệp này bằng trình tải thích hợp. Để điều này hoạt động, bạn cũng cần định cấu hình trình tải SVG, vì tệp là tệp SVGĐể tải các tệp SVG, chúng tôi sử dụng trình tải tệp webpack
Nếu bạn chưa định cấu hình
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1, bạn sẽ gặp lỗi khó hiểu như thế này module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0Bạn sẽ gặp lỗi này mặc dù bạn đã định cấu hình trình tải cho các tệp SVG. Tránh các lỗi kỳ lạ như thế bằng cách luôn sử dụng
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 cho cấu hình CSS của bạnTrình tải tiếp theo bạn đã định cấu hình là
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0. Trình tải này thêm CSS vào DOM để các kiểu hoạt động và hiển thị trên trang. Điều này là cần thiết vì CSS được đưa vào tệp module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
38 - không có tệp module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
3 riêng biệtCó thể xuất một tệp
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
3 riêng biệt bằng cách sử dụng mini-css-extract-plugin thay vì sử dụng module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0 như chúng tôi đã làm trước đâyĐiều đầu tiên bạn cần làm là cài đặt phụ thuộc
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
7Sau đó, bạn cần nhập plugin ở đầu
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
11 module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
9Điều tiếp theo là kích hoạt plugin trong phần plugin của tệp
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
11 của bạn module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1Và cuối cùng nhưng không kém phần quan trọng, bạn thay thế
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0 bằng module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
05Bây giờ khi bạn chạy webpack, nó sẽ xuất ra tệp
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
06 trong thư mục dist mà bạn có thể tham khảo từ tệp module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
07 của mình. [xóa dòng module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
08 khỏi module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
5 nếu bạn đã thêm dòng đó]Bây giờ bạn đã biết cách định cấu hình CSS thuần túy, hãy xem cách định cấu hình các mô-đun CSS trong webpack
Nhưng trước tiên, các mô-đun CSS là gì?
"Mô-đun CSS là một tệp CSS trong đó tất cả các tên lớp và tên hoạt hình được đặt trong phạm vi cục bộ theo mặc định. "
CSS là toàn cầu - các lớp bạn xác định có thể được sử dụng ở mọi nơi. Nhưng các mô-đun CSS được đặt trong phạm vi thành phần mà chúng được sử dụng
thủ thuật CSS. com có một bài giới thiệu khá hay về Mô-đun CSS rất hữu ích nếu bạn muốn tìm hiểu thêm. Trong bài đăng này, chúng tôi sẽ tập trung vào việc tìm hiểu cách định cấu hình nó
Định cấu hình các mô-đun CSS khá giống với định cấu hình CSS
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
8bạn vẫn sử dụng
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 và module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
0. Không phụ thuộc thêm là cần thiết. Nhưng sự khác biệt để định cấu hình CSS là bạn thêm hai tùy chọn vào module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1Đó là
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
73 yêu cầu module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1 kích hoạt các mô-đun CSS module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
75 có nghĩa là nó cũng áp dụng các mô-đun CSS trên các tài nguyên module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
76edSử dụng đồng thời cả Mô-đun CSS và CSS toàn cầu
Vì vậy, cách để kích hoạt các mô-đun CSS là chuyển một số tùy chọn cho
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
1. Nhưng nếu chúng ta muốn sử dụng cả mô-đun CSS và CSS thì sao?. Giả sử bạn có tệp ________ 378 thực sự là CSS toàn cầu. Hoặc bạn sử dụng thành phần của bên thứ ba phụ thuộc vào CSS toàn cầu. Nó có thể làm đượcChúng tôi cần một quy ước để sử dụng để quyết định tệp nào là CSS toàn cầu và tệp nào là mô-đun CSS. Cách tôi muốn làm là chỉ sử dụng các mô-đun CSS cho các tệp kết thúc bằng
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
79, ví dụ như module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
90 và tất cả các tệp module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
91 khác là toàn cầuĐể định cấu hình, chúng tôi sẽ thêm hai trình tải vào cấu hình webpack của chúng tôi. một cho CSS và một cho các mô-đun CSS và chúng tôi sẽ sử dụng các từ khóa
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
92 và module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
93 để tách hai. ________ 392 và _______ 393 nhận một biểu thức chính quy quyết định xem tệp có nên được sử dụng hay không. Thiết lập hoàn chỉnh trông như thế này module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
5Bây giờ bạn có thể sử dụng cả CSS và mô-đun CSS trong dự án của mình
Theo dõi tôi trên Twitter để nhận thông tin cập nhật theo thời gian thực về các mẹo, thông tin chi tiết và những thứ tôi xây dựng trong hệ sinh thái giao diện người dùng