Webpack 外掛
UnoCSS 的 webpack 外掛:@unocss/webpack
。目前,此插件僅支援 global
模式。
資訊
此外掛不包含任何預設預設集。
先決條件
@unocss/webpack
需要 style-loader
和 css-loader
來處理 CSS 檔案。
安裝
bash
pnpm add -D @unocss/webpack
bash
yarn add -D @unocss/webpack
bash
npm install -D @unocss/webpack
從 UnoCSS 版本 v0.59.0
開始,UnoCSS 已遷移至僅限 ESM,您需要透過動態導入來載入您的設定
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
})
警告
如果您使用的是 webpack@4.x,則不支援 optimization.realContentHash
設定,您應該使用 css.extract.filename
來自訂 CSS 檔名(我們以雜湊碼的前 9 個字母作為範例,而不是 contenthash)。請注意這個與 bundle 相關的已知問題以及 webpack#9520。
用法
將 uno.css
新增到您的主要入口點
ts
import 'uno.css'
框架
Vue + Vue CLI
如果您正在使用 Vue CLI 搭配 webpack 4/5 和 UnoCSS v0.59.0
,您需要使用最新的 Vue CLI Service v5.0.8
以透過動態導入來載入您的設定
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,
},
}