مكون Webpack الإضافي
مكون webpack الإضافي لـ UnoCSS: @unocss/webpack. حالياً، يدعم هذا المكون الإضافي فقط وضع global.
INFO
لا يأتي هذا المكون الإضافي مع أي إعدادات مسبقة افتراضية.
المتطلبات الأساسية
يتطلب @unocss/webpack style-loader و css-loader للتعامل مع ملفات CSS.
التثبيت
pnpm add -D @unocss/webpackyarn add -D @unocss/webpacknpm install -D @unocss/webpackbun add -D @unocss/webpackمن إصدار UnoCSS v0.59.0، تم نقل UnoCSS إلى ESM فقط، تحتاج إلى تحميل التكوين الخاص بك عبر استيراد ديناميكي:
// webpack.config.js
module.exports = function () {
return import('@unocss/webpack').then(({ default: UnoCSS }) => ({
plugins: [
UnoCSS()
],
optimization: {
realContentHash: true
}
}))
}// webpack.config.js
module.exports = function () {
return import('@unocss/webpack').then(({ default: UnoCSS }) => ({
plugins: [
UnoCSS()
],
css: {
extract: {
filename: '[name].[hash:9].css'
},
},
}))
}إذا كنت تستخدم إصداراً أقدم من UnoCSS، يمكنك استخدام الكود التالي:
// webpack.config.js
const UnoCSS = require('@unocss/webpack').default
module.exports = {
plugins: [
UnoCSS()
],
optimization: {
realContentHash: true
}
}// webpack.config.js
const UnoCSS = require('@unocss/webpack').default
module.exports = {
plugins: [
UnoCSS()
],
css: {
extract: {
filename: '[name].[hash:9].css'
}
}
}قم بإنشاء ملف uno.config.ts:
import { defineConfig } from 'unocss'
export default defineConfig({
// ...خيارات UnoCSS
})WARNING
إذا كنت تستخدم webpack@4.x، فإن تكوين optimization.realContentHash غير مدعوم، ويجب عليك استخدام css.extract.filename لتخصيص اسم ملف CSS (نستخدم أول 9 أحرف من hashcode بدلاً من contenthash كمثال). احذر من هذه المشكلة المعروفة مع bundle و webpack#9520.
الاستخدام
أضف uno.css إلى نقطة الدخول الرئيسية:
import 'uno.css'الأطر
Vue + Vue CLI
إذا كنت تستخدم Vue CLI مع webpack 4/5 مع UnoCSS v0.59.0، تحتاج إلى استخدام أحدث Vue CLI Service v5.0.8 لتحميل التكوين الخاص بك مع استيراد ديناميكي:
// 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
}
}))
}// 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، يمكنك استخدام الكود التالي:
// 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
},
}// 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,
},
}