Webpack プラグイン 
UnoCSS の webpack プラグイン: @unocss/webpack。現在、このプラグインは global モードのみをサポートしています。
情報
このプラグインにはデフォルトのプリセットは付属していません。
前提条件 
@unocss/webpack は、CSS ファイルを処理するために style-loader と css-loader を必要とします。
インストール 
bash
pnpm add -D @unocss/webpackbash
yarn add -D @unocss/webpackbash
npm install -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
})警告
webpack@4.x を使用している場合、optimization.realContentHash 設定はサポートされていません。また、CSS ファイル名をカスタマイズするには css.extract.filename を使用する必要があります(例として、contenthash の代わりにハッシュコードの最初の 9 文字を使用します)。バンドルに関する 既知の問題と webpack#9520 に注意してください。
使い方 
uno.css をメインエントリに追加します
ts
import 'uno.css'フレームワーク 
Vue + Vue CLI 
webpack 4/5 で UnoCSS v0.59.0 を使用して Vue CLI を使用している場合は、動的インポートで設定をロードするために、最新の 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,
  },
}