咱們知道webpack
自己只能解析js文件,可是咱們的項目中確定會有html
,css
,圖片
等其餘文件類型,這個時候咱們就須要loader
幫咱們把這些文件轉化成webpack
可以處理的有效模塊。css
loader
用於對模塊的源代碼進行轉換。loader
可使你在import
或"加載"模塊時預處理文件。所以,loader
相似於其餘構建工具中「任務(task
)」,並提供了處理前端構建步驟的強大方法。K 能夠將文件從不一樣的語言(如TypeScript
)轉換爲JavaScript
,或將內聯圖像轉換爲data URL
。loader
甚至容許你直接在JavaScript
模塊中import
CSS文件!html
loader
自己就是一個函數,接收源代碼爲入參,輸出編譯過以後代碼。前端
最常使用的是在webpack.config.js
裏指定loader webpack.config.jsnode
module: {
rules: [
{
test: /\.css$/,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}
]
}
複製代碼
test
設置文件匹配規則react
use
指定使用loaderwebpack
options
爲使用loader的配置項es6
注意:loader的執行順序是從右向左依次執行web
ok,咱們來看下經常使用的一些loader使用sass
使用babel-loader
,它依賴babel
,因此須要配置文件.babelrc
bash
而對ES6的解析,咱們只須要在.babelrc
加上以下配置便可:
{
"presets": [
"@babel/preset-env"
]
}
複製代碼
接着配置下webpack.config.js
module: {
rule: [
{
test: /\.js$/,
use: ['babel-loader'],
exclude: '/node_modules/'
}
]
}
複製代碼
也是使用babel-loader
首先要在.babelrc
增長react的解析配置:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
複製代碼
webpack.config.js
同上
使用css-loader
和style-loader
css-loader
用於加載.css文件,而且轉換成commonJs對象
style-loader
將樣式經過<style>
標籤插入到head
中
咱們先安裝一下
配置webpack.config.js
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
複製代碼
less
使用less-loader
sass
使用sass-loader
這兩個loader都是先將文件轉換成css,而後經過css-loader和style-loader輸出到頁面
webpack.config.js
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader', 'less-loader']
}
]
}
複製代碼
1.file-loader webpack.config.js
module: {
rules: [
{
test: /\.(png|svg|jpg|gif)$/,
use: ['file-loader']
}
]
}
複製代碼
2.url-loader url-loader
功能和file-loader
差很少,多了一個小資源轉base64的功能
webpack.config.js
module: {
rules: [
{
test: /\.(png|svg|jpg|gif)$/,
use: [{
loader: 'url-loader',
options: {
limit: 10240
}
}]
}
]
}
複製代碼
limit
就是對轉換尺寸的限制。
webpack學習之路(四)webpack-hot-middleware實現熱更新
webpack學習之路(三)webpack-dev-middleware
webpack學習之路(二)webpack-dev-server實現熱更新
I am moving forward.