Assets ใน CSS Bundles ของ Webpack
ตอนนี้เรามาทำให้
เส้นทางไปยังไฟล์ .png
ถูกแทนที่ในไฟล์ CSS ระหว่างกระบวนการ build กัน:
export default {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve('dist')
},
module: {
rules: [
{
test: /\.png$/,
type: 'asset/resource'
},
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, 'css-loader'],
},
]
},
plugins: [
new MiniCssExtractPlugin({
filename: 'bundle.[contenthash].css'
}),
new HtmlWebpackPlugin(),
],
};
ลองตรวจสอบว่ามันทำงานอย่างไร ลอง import รูปภาพและไฟล์สไตล์ เข้าไปใน entry point:
import './images/img.png';
import './styles.css';
สมมติว่าในไฟล์สไตล์เราใช้ เส้นทางไปยังรูปภาพ:
body {
background: url('images/img.png');
}
หลังจาก build เส้นทางไปยังรูปภาพ ใน CSS bundle จะถูกเปลี่ยนเป็นอันใหม่:
body {
background: url('เส้นทางที่ถูกต้องจากรูท');
}
กำหนดรูปภาพพื้นหลังในไฟล์ CSS
Import รูปภาพเข้าไปใน entry point
ทำการ build และดูว่า รูปภาพถูกคัดลอกไปที่ไฟล์ไหน และเส้นทางใหม่ใน CSS bundle จะมีลักษณะอย่างไร