-
-
Notifications
You must be signed in to change notification settings - Fork 779
/
index.ts
75 lines (66 loc) · 1.79 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
69
70
71
72
73
74
75
import { dirname, resolve } from 'path'
import { fileURLToPath } from 'url'
import { addComponentsDir, addPluginTemplate, defineNuxtModule, extendViteConfig, 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) {
// preset shortcuts
resolveOptions(options)
if (options.autoImport) {
addPluginTemplate({
filename: 'unocss.mjs',
getContents: () => {
const lines = [
'import \'uno.css\'',
'export default defineNuxtPlugin(() => {})',
]
if (options.preflight)
lines.unshift('import \'@unocss/reset/tailwind.css\'')
return lines.join('\n')
},
})
}
if (options.components) {
addComponentsDir({
path: resolve(dir, '../runtime'),
watch: false,
})
}
extendViteConfig((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
}
}