/
index.ts
68 lines (58 loc) · 1.57 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { dirname, resolve } from 'path'
import { fileURLToPath } from 'url'
import { addComponentsDir, defineNuxtModule, extendWebpackConfig } from '@nuxt/kit'
import WebpackPlugin from '@unocss/webpack'
import VitePlugin from '@unocss/vite'
import { resolveOptions } from './options'
import type { UnocssNuxtOptions } from './types'
export { UnocssNuxtOptions }
const dir = dirname(fileURLToPath(import.meta.url))
export default defineNuxtModule<UnocssNuxtOptions>({
meta: {
name: 'unocss',
configKey: 'unocss',
},
defaults: {
autoImport: true,
preflight: false,
components: true,
// presets
uno: true,
attributify: false,
webFonts: false,
icons: false,
wind: false,
},
setup(options, nuxt) {
// preset shortcuts
resolveOptions(options)
if (options.autoImport) {
nuxt.options.css ||= []
nuxt.options.css.push('uno.css')
if (options.preflight)
nuxt.options.css.unshift('@unocss/reset/tailwind.css')
}
if (options.components) {
addComponentsDir({
path: resolve(dir, '../runtime'),
watch: false,
})
}
nuxt.hook('vite:extend', ({ config }) => {
config.plugins = config.plugins || []
config.plugins.unshift(...VitePlugin({}, options))
})
extendWebpackConfig((config) => {
config.plugins = config.plugins || []
config.plugins.unshift(WebpackPlugin({}, options))
})
},
})
declare module '@nuxt/schema' {
interface NuxtConfig {
unocss?: UnocssNuxtOptions
}
interface NuxtOptions {
unocss?: UnocssNuxtOptions
}
}