Webpack
能夠以指定入口的一系列相互依賴的模塊打包成一個文件,模塊能夠是js
,也能夠是其餘類型的文件,但其餘類型的文件須要對應的Loader
轉義css
Loader
的方式在webpack.config.js
文件的module.rules
下配置,一個對象便配置了編譯該類型文件的Loaderhtml
module.exports = {
module: {
rules: [
{ test: /\.css$/, // 文件類型
include: [], // 查找文件的範圍
exclude: [], // 查找文件需排除的文件夾
use: ['loader']// 處理文件的Loader,可配置多個Loader
}
]
}
}
複製代碼
use
配置
use
是一個數組,其中能夠配置多個Loader
,webpack
中多個Loader
會按從右到左
的順序執行webpack
use
數組能夠包含字符串和對象web
use字符串
若是use
中包含的是字符串,則表示的是Loader
的名稱數組
use: ['style-loader', 'css-loader']
複製代碼
use對象
若是use
包含的是對象
,則對象中loader
表示Loader加載器
的名稱,options
表示Loader
的額外配置,它是用來給Loader傳參
的babel
use: [{
loader: 'babel-loader',
options: { // 額外配置,用於給Loader傳參
presets: ['@babel/preset-env'], // presets設置的是當前JS的版本
plugins: [require('@babel/plugin-transform-object-rest-spread')] // 須要的插件
}
}]
use: [{
loader: 'file-loader',
options: { // 不一樣的加載器,參數不一樣
name: '[name].[hash:8].[ext]',
publicPath: './images',
outputPath: './images'
}
}]
複製代碼
CSS
模塊CSS
的兩種方式
CSS
時,在最後生成的JS
文件中進行處理,動態建立Style
標籤,放入head
標籤中CSS
文件拆分出來,CSS
相關模塊最終打包到一個指定的CSS
文件中,經過手動添加link
標籤去引入這個文件Webpack
編譯CSS
(第一種)安裝style-loader
和css-loader
模塊,並在webpack.config.js
中配置Loader
ui
module.exports = {
module: {
rules: [
{ test: /\.css$/, use: ['style-loader', 'css-loader'] }
]
}
}
複製代碼
在遇到.css
文件,Webpack
會先用css-loader
去解析這個文件,遇到@import
等語句就將相應樣式文件引入,最後全部的CSS
將使用style-loader
生成一個內容爲最終解析完的CSS
代碼的Style
標籤,放到head
標籤裏spa
使用extract-text-webpack-plugin
插件,將css-loader
和style-loader
編譯好的CSS
文件抽離出來,放到一個單獨問.css
文件中,而後在index.html
中使用link
引入插件
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
module: {
rules: [{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}]
},
// CSS存放到style.css文件中
plugins: [new ExtractTextPlugin("styles.css")]
}
// index.html
// /dist/爲輸出文件,具體看本身的output配置
<link rel="stylesheet" href="./dist/style.css" type="text/css" />
複製代碼