Webpack Plugin
Webpack plugin สำหรับ UnoCSS: @unocss/webpack ปัจจุบัน plugin นี้รองรับเฉพาะ global mode
INFO
plugin นี้ไม่มาพร้อมกับ default presets ใดๆ
Prerequisite
@unocss/webpack ต้องการ style-loader และ css-loader เพื่อจัดการ CSS files
การติดตั้ง
bash
pnpm add -D @unocss/webpackbash
yarn add -D @unocss/webpackbash
npm install -D @unocss/webpackbash
bun add -D @unocss/webpackจาก UnoCSS version v0.59.0 UnoCSS ถูกย้ายเป็น ESM-only คุณต้องโหลด configuration ของคุณผ่าน dynamic import:
ts
// webpack.config.js
module.exports = function () {
return import('@unocss/webpack').then(({ default: UnoCSS }) => ({
plugins: [
UnoCSS()
],
optimization: {
realContentHash: true
}
}))
}js
// webpack.config.js
module.exports = function () {
return import('@unocss/webpack').then(({ default: UnoCSS }) => ({
plugins: [
UnoCSS()
],
css: {
extract: {
filename: '[name].[hash:9].css'
},
},
}))
}หากคุณใช้ UnoCSS เวอร์ชันเก่า คุณสามารถใช้โค้ดต่อไปนี้:
ts
// webpack.config.js
const UnoCSS = require('@unocss/webpack').default
module.exports = {
plugins: [
UnoCSS()
],
optimization: {
realContentHash: true
}
}js
// webpack.config.js
const UnoCSS = require('@unocss/webpack').default
module.exports = {
plugins: [
UnoCSS()
],
css: {
extract: {
filename: '[name].[hash:9].css'
}
}
}สร้างไฟล์ uno.config.ts:
ts
import { defineConfig } from 'unocss'
export default defineConfig({
// ...UnoCSS options
})WARNING
หากคุณใช้ webpack@4.x configuration optimization.realContentHash ไม่ได้รับการรองรับ และคุณควรใช้ css.extract.filename เพื่อปรับแต่ง CSS filename (เราใช้ 9 ตัวอักษรแรกของ hashcode แทน contenthash เป็นตัวอย่าง) ระวัง known issue นี้กับ bundle และ webpack#9520
การใช้งาน
เพิ่ม uno.css ไปยัง main entry ของคุณ:
ts
import 'uno.css'Frameworks
Vue + Vue CLI
หากคุณใช้ Vue CLI กับ webpack 4/5 กับ UnoCSS v0.59.0 คุณต้องใช้ Vue CLI Service v5.0.8 ล่าสุดเพื่อโหลด configuration ของคุณด้วย dynamic import:
ts
// vue.config.js
const process = require('node:process')
module.exports = function () {
return import('@unocss/webpack').then(({ default: UnoCSS }) => ({
configureWebpack: {
devtool: 'inline-source-map',
plugins: [
UnoCSS()
],
optimization: {
realContentHash: true
}
},
chainWebpack(config) {
config.module.rule('vue').uses.delete('cache-loader')
config.module.rule('tsx').uses.delete('cache-loader')
config.merge({
cache: false
})
},
css: {
extract: process.env.NODE_ENV === 'development'
? {
filename: 'css/[name].css',
chunkFilename: 'css/[name].css'
}
: true
}
}))
}ts
// vue.config.js
const process = require('node:process')
module.exports = function () {
return import('@unocss/webpack').then(({ default: UnoCSS }) => ({
configureWebpack: {
plugins: [
UnoCSS({})
]
},
chainWebpack(config) {
config.module.rule('vue').uses.delete('cache-loader')
config.module.rule('tsx').uses.delete('cache-loader')
config.merge({
cache: false
})
},
css: {
extract: process.env.NODE_ENV === 'development'
? {
filename: '[name].css',
chunkFilename: '[name].[hash:9].css'
}
: true
}
}))
}หากใช้ UnoCSS เวอร์ชันเก่า คุณสามารถใช้โค้ดต่อไปนี้:
ts
// vue.config.js
const process = require('node:process')
const UnoCSS = require('@unocss/webpack').default
module.exports = {
configureWebpack: {
devtool: 'inline-source-map',
plugins: [
UnoCSS()
],
optimization: {
realContentHash: true
}
},
chainWebpack(config) {
config.module.rule('vue').uses.delete('cache-loader')
config.module.rule('tsx').uses.delete('cache-loader')
config.merge({
cache: false
})
},
css: {
extract: process.env.NODE_ENV === 'development'
? {
filename: 'css/[name].css',
chunkFilename: 'css/[name].css'
}
: true
},
}ts
// vue.config.js
const process = require('node:process')
const UnoCSS = require('@unocss/webpack').default
module.exports = {
configureWebpack: {
plugins: [
UnoCSS({}),
]
},
chainWebpack(config) {
config.module.rule('vue').uses.delete('cache-loader')
config.module.rule('tsx').uses.delete('cache-loader')
config.merge({
cache: false,
})
},
css: {
extract: process.env.NODE_ENV === 'development'
? {
filename: '[name].css',
chunkFilename: '[name].[hash:9].css',
}
: true,
},
}