Skip to content

Commit f0f84d1

Browse files
committed
fix(nuxt): store config in runtime config for plugin instead of JSON
1 parent 6882d6d commit f0f84d1

File tree

4 files changed

+18
-16
lines changed

4 files changed

+18
-16
lines changed

packages/nuxt/src/composables/use-config-file.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { existsSync } from 'fs'
2-
import { resolveAlias, useNuxt } from '@nuxt/kit';
2+
import { resolveAlias, useNuxt } from '@nuxt/kit'
33
import { resolve } from 'pathe'
4-
import { resolveInRuntime } from './../utils/resolve';
4+
import { resolveInRuntime } from './../utils/resolve'
55

6-
export const useConfigFile = async () => {
6+
export const useConfigFile = () => {
77
const root = resolveAlias('~/')
88
const configPath = resolve(root, 'vuestic.config.ts')
99
const nuxt = useNuxt()
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { addPluginTemplate } from '@nuxt/kit'
1+
import { addPluginTemplate, useNuxt } from '@nuxt/kit'
22

33
import { resolveInRuntime } from '../utils/resolve'
44

@@ -8,13 +8,13 @@ import type { VuesticOptions } from '../types'
88
export const useVuesticPlugin = (options: VuesticOptions) => {
99
const pluginPath = resolveInRuntime('./runtime/plugin.mjs')
1010

11+
const nuxt = useNuxt()
12+
13+
;(nuxt.options.runtimeConfig.public as any)['#vuestic-public-options-config'] = options.config
14+
;(nuxt.options.runtimeConfig.public as any)['#vuestic-public-options-theme-cookie-key'] = options.themeCookieKey
15+
1116
addPluginTemplate({
1217
src: pluginPath,
13-
filename: pluginPath.split('/').pop(),
14-
15-
// Use JSON.stringify() here, because it will be inserted in ejs template as string. Then we will JSON.parse it.
16-
options: {
17-
value: JSON.stringify(options),
18-
},
18+
filename: pluginPath.split('/').pop()
1919
})
2020
}

packages/nuxt/src/module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useVuesticCSS } from './composables/use-css'
44
import { useVuesticPlugin } from './composables/use-plugin'
55
import { useVuesticComposables } from './composables/use-composables'
66
import { useVuesticComponents } from './composables/use-components'
7-
import { useTranspile } from './composables/use-transpile';
7+
import { useTranspile } from './composables/use-transpile'
88
import { useConfigFile } from './composables/use-config-file'
99

1010
import type { VuesticOptions } from './types'
@@ -24,7 +24,7 @@ export default defineNuxtModule<VuesticOptions>({
2424
config: {},
2525
css: [],
2626
fonts: true,
27-
themeCookieKey: 'vuestic-theme',
27+
themeCookieKey: 'vuestic-theme'
2828
},
2929

3030
setup (options) {

packages/nuxt/src/runtime/plugin.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import type { VuesticOptions } from '../types'
1313
import { useHead, ReactiveHead, defineNuxtPlugin, useCookie } from '#imports'
1414
import NuxtLink from '#app/components/nuxt-link'
1515
import configFromFile from '#vuestic-config'
16+
import { useRuntimeConfig } from '#app'
1617

1718
function getGlobalProperty (app, key) {
1819
return app.config.globalProperties[key]
@@ -21,10 +22,11 @@ function getGlobalProperty (app, key) {
2122
export default defineNuxtPlugin((nuxtApp) => {
2223
const { vueApp: app } = nuxtApp
2324

24-
// It's important to use `, because TS will compile qoutes to " and JSON will not be parsed...
25-
const moduleOptions: VuesticOptions = JSON.parse('<%= options.value %>')
26-
const themeCookie = useCookie(moduleOptions.themeCookieKey)
27-
const userConfig = configFromFile || moduleOptions.config || {}
25+
// Ignore
26+
const moduleOptionsConfig: VuesticOptions['config'] = (useRuntimeConfig() as any).public['#vuestic-public-options-config']
27+
const moduleOptionsThemeCookieKey: VuesticOptions['themeCookieKey'] = (useRuntimeConfig() as any).public['#vuestic-public-options-theme-cookie-key']
28+
const themeCookie = useCookie(moduleOptionsThemeCookieKey)
29+
const userConfig = configFromFile || moduleOptionsConfig || {}
2830
const configWithColors: PartialGlobalConfig = {
2931
...userConfig,
3032
colors: {

0 commit comments

Comments
 (0)