-
Notifications
You must be signed in to change notification settings - Fork 31
/
module.ts
62 lines (56 loc) · 1.72 KB
/
module.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
import { fileURLToPath } from 'node:url'
import {
defineNuxtModule,
createResolver,
addImportsDir,
addComponentsDir,
} from '@nuxt/kit'
import { defu } from 'defu'
import type { ConfigOptions } from '@cloudinary-util/url-loader'
export type ModuleOptions = {
cloudName?: string
uploadPreset?: string
apiKey?: string
analytics?: boolean
cloud?: ConfigOptions['cloud']
url?: ConfigOptions['url']
}
export default defineNuxtModule<ModuleOptions>({
meta: {
name: '@nuxtjs/cloudinary',
configKey: 'cloudinary',
},
defaults: {
cloudName: process.env.CLOUDINARY_CLOUD_NAME,
analytics: true,
},
setup(options, nuxt) {
const resolver = createResolver(import.meta.url)
nuxt.options.runtimeConfig.public.cloudinary = defu(
nuxt.options.runtimeConfig.public.cloudinary,
{
cloudName: process.env.CLOUDINARY_CLOUD_NAME || options.cloudName,
uploadPreset:
process.env.CLOUDINARY_UPLOAD_PRESET || options.uploadPreset,
apiKey: process.env.CLOUDINARY_API_KEY || options.apiKey,
analytics: options.analytics,
cloud: options.cloud,
url: options.url,
},
)
if (!nuxt.options.runtimeConfig.public.cloudinary?.cloudName)
console.warn(
'`[@nuxtjs/cloudinary]` Environment variable `CLOUDINARY_CLOUD_NAME` or property `cloudinary.cloudName` missing',
)
const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url))
nuxt.options.build.transpile.push(runtimeDir)
addImportsDir(resolver.resolve(runtimeDir, 'composables'))
addComponentsDir({
path: resolver.resolve(runtimeDir, 'components'),
pathPrefix: false,
prefix: '',
priority: 999,
global: true,
})
},
})