Webpackプラグイン
UnoCSS用のwebpackプラグイン:@unocss/webpack。現在、このプラグインはglobalモードのみをサポートしています。
INFO
このプラグインにはデフォルトのプリセットは含まれていません。
前提条件
@unocss/webpackはCSSファイルを処理するためにstyle-loaderとcss-loaderが必要です。
インストール
bash
pnpm add -D @unocss/webpackbash
yarn add -D @unocss/webpackbash
npm install -D @unocss/webpackbash
bun add -D @unocss/webpackUnoCSSバージョン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
})WARNING
webpack@4.xを使用している場合、optimization.realContentHash設定はサポートされていません。CSSファイル名をカスタマイズするにはcss.extract.filenameを使用する必要があります(例ではcontenthashの代わりにハッシュコードの最初の9文字を使用しています)。バンドルに関する既知の問題と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