nuxt-ignis 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.data/content/contents.sqlite +0 -0
- package/.env +3 -3
- package/.nuxt/app.config.mjs +227 -1
- package/.nuxt/components.d.ts +372 -140
- package/.nuxt/content/components.ts +93 -36
- package/.nuxt/dev/index.mjs +7601 -0
- package/.nuxt/dev/index.mjs.map +1 -0
- package/.nuxt/dist/server/client.manifest.json +2 -2
- package/.nuxt/dist/server/client.manifest.mjs +2 -2
- package/.nuxt/eslint.config.d.mts +2 -2
- package/.nuxt/eslint.config.mjs +2 -2
- package/.nuxt/imports.d.ts +57 -42
- package/.nuxt/manifest/latest.json +1 -1
- package/.nuxt/manifest/meta/dev.json +1 -1
- package/.nuxt/module/@nuxtjs-sitemap.d.ts +8 -8
- package/.nuxt/module/nuxt-robots.d.ts +3 -3
- package/.nuxt/module/nuxt-seo-utils.d.ts +6 -6
- package/.nuxt/module/nuxt-site-config.d.ts +8 -8
- package/.nuxt/nitro.json +4 -4
- package/.nuxt/nuxt.d.ts +12 -10
- package/.nuxt/nuxt.json +2 -2
- package/.nuxt/schema/nuxt.schema.d.ts +193 -0
- package/.nuxt/schema/nuxt.schema.json +261 -1
- package/.nuxt/tsconfig.json +133 -110
- package/.nuxt/tsconfig.server.json +82 -64
- package/.nuxt/types/app.config.d.ts +227 -1
- package/.nuxt/types/build.d.ts +2 -1
- package/.nuxt/types/i18n-plugin.d.ts +2 -2
- package/.nuxt/types/imports.d.ts +318 -264
- package/.nuxt/types/neon.d.ts +136 -34
- package/.nuxt/types/nitro-imports.d.ts +40 -40
- package/.nuxt/types/nitro-routes.d.ts +21 -18
- package/.nuxt/types/plugins.d.ts +37 -33
- package/.nuxt/types/schema.d.ts +72 -12
- package/.nuxt/types/ui.d.ts +1 -1
- package/.nuxt/ui/checkbox-group.ts +1 -1
- package/.nuxt/ui/context-menu.ts +2 -1
- package/.nuxt/ui/dropdown-menu.ts +2 -1
- package/.nuxt/ui/input-menu.ts +2 -2
- package/.nuxt/ui/navigation-menu.ts +43 -34
- package/.nuxt/ui/radio-group.ts +1 -1
- package/.nuxt/ui/select-menu.ts +2 -2
- package/.nuxt/ui/select.ts +2 -2
- package/.nuxt/ui/tooltip.ts +1 -1
- package/.nuxt/ui.css +4 -1
- package/content.config.ts +6 -10
- package/features.ts +14 -1
- package/nuxt.config.ts +1 -1
- package/package.json +13 -13
- package/server/api/neonTest.ts +7 -5
- package/test/features/db-neon.txt +3 -0
- package/test/features/db-off.txt +3 -0
- package/test/features/db-supabase.txt +3 -0
- package/test/features/default.txt +3 -0
- package/test/features/disable-core.txt +3 -0
- package/test/features/enable-all.txt +4 -0
- package/test/features/forms-formkit.txt +3 -0
- package/test/features/forms-off.txt +3 -0
- package/test/features/forms-vueform.txt +3 -0
- package/test/features/ui-nuxt-ui.txt +3 -0
- package/test/features/ui-off.txt +3 -0
- package/test/features/ui-tailwind.txt +4 -0
- package/test/features.test.ts +191 -0
- package/utils/config/content.config.ts +12 -0
- package/utils/config/vueform.config.ts +20 -0
- package/utils/content.ts +31 -0
- package/utils/tailwind.ts +19 -0
- package/utils/vueform.ts +16 -0
- package/vueform.config.ts +4 -16
- package/.nuxt/component-chunk.mjs +0 -1
- package/.nuxt/dist/server/server.mjs +0 -1
- package/.nuxt/tailwind/postcss.mjs +0 -15
package/features.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { defu } from 'defu'
|
|
|
4
4
|
import OpenProps from 'open-props'
|
|
5
5
|
import tailwindcss from '@tailwindcss/vite'
|
|
6
6
|
import { log } from './utils/consola'
|
|
7
|
+
import { ignisTailwindcssFix } from './utils/tailwind'
|
|
7
8
|
|
|
8
9
|
const currentDir = dirname(fileURLToPath(import.meta.url))
|
|
9
10
|
|
|
@@ -67,7 +68,9 @@ export function setFeatures() {
|
|
|
67
68
|
process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = uiPreset = 'off'
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
let tailwindFixRequired = false
|
|
70
72
|
if (uiPreset === 'nuxt-ui' || process.env.NUXT_PUBLIC_IGNIS_UI === 'true') {
|
|
73
|
+
tailwindFixRequired = true
|
|
71
74
|
nuxtConfig.modules.push('@nuxt/ui')
|
|
72
75
|
// import tailwind css file
|
|
73
76
|
nuxtConfig = defu({
|
|
@@ -85,6 +88,7 @@ export function setFeatures() {
|
|
|
85
88
|
|
|
86
89
|
// evaluate separate Tailwind CSS module
|
|
87
90
|
if (uiPreset === 'tailwind' || (process.env.NUXT_PUBLIC_IGNIS_TAILWIND === 'true' && uiPreset !== 'nuxt-ui')) {
|
|
91
|
+
tailwindFixRequired = true
|
|
88
92
|
// nuxtConfig.modules.push('@nuxtjs/tailwindcss') // temporary disabled until v7 is released
|
|
89
93
|
extras.push('Tailwind CSS')
|
|
90
94
|
// import tailwind css file
|
|
@@ -97,6 +101,15 @@ export function setFeatures() {
|
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
|
|
104
|
+
// TODO occasionaly check https://github.com/tailwindlabs/tailwindcss/discussions/16119 for solution
|
|
105
|
+
if (tailwindFixRequired) {
|
|
106
|
+
nuxtConfig = defu({
|
|
107
|
+
vite: {
|
|
108
|
+
plugins: [ignisTailwindcssFix],
|
|
109
|
+
},
|
|
110
|
+
}, nuxtConfig)
|
|
111
|
+
}
|
|
112
|
+
|
|
100
113
|
// database
|
|
101
114
|
let dbPreset = process.env.NUXT_PUBLIC_IGNIS_PRESET_DB
|
|
102
115
|
if (dbPreset && !['neon', 'supabase'].includes(dbPreset)) {
|
|
@@ -230,7 +243,7 @@ export function setFeatures() {
|
|
|
230
243
|
// this means e.g. 2 database modules or 2 form solutions
|
|
231
244
|
if (process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES !== 'false') {
|
|
232
245
|
const used = nuxtConfig.modules
|
|
233
|
-
if (used.includes('nuxt-neon') && used.includes('
|
|
246
|
+
if (used.includes('nuxt-neon') && used.includes('@nuxtjs/supabase')) {
|
|
234
247
|
log.warn('You have both DB connector modules (Neon and Supabase) active, which is not recommended. If this is intentional, you can use `process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES=false` to surpress this warning.')
|
|
235
248
|
}
|
|
236
249
|
if (used.includes('@vueform/nuxt') && used.includes('@formkit/nuxt')) {
|
package/nuxt.config.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-ignis",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Enhanced and customizable Nuxt application starter pack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nuxt",
|
|
@@ -30,32 +30,32 @@
|
|
|
30
30
|
"@nuxt/eslint": "1.4.1",
|
|
31
31
|
"@nuxt/fonts": "0.11.4",
|
|
32
32
|
"@nuxt/image": "1.10.0",
|
|
33
|
-
"@nuxt/scripts": "0.11.
|
|
34
|
-
"@nuxt/ui": "3.1.
|
|
35
|
-
"@nuxtjs/i18n": "9.5.
|
|
33
|
+
"@nuxt/scripts": "0.11.8",
|
|
34
|
+
"@nuxt/ui": "3.1.3",
|
|
35
|
+
"@nuxtjs/i18n": "9.5.5",
|
|
36
36
|
"@nuxtjs/seo": "3.0.3",
|
|
37
37
|
"@nuxtjs/supabase": "1.5.1",
|
|
38
38
|
"@nuxtjs/tailwindcss": "6.14.0",
|
|
39
|
-
"@pinia/nuxt": "0.11.
|
|
40
|
-
"@vueform/nuxt": "1.
|
|
41
|
-
"@vueuse/core": "13.
|
|
42
|
-
"@vueuse/nuxt": "13.
|
|
43
|
-
"@tailwindcss/vite": "4.1.
|
|
39
|
+
"@pinia/nuxt": "0.11.1",
|
|
40
|
+
"@vueform/nuxt": "1.15.0",
|
|
41
|
+
"@vueuse/core": "13.3.0",
|
|
42
|
+
"@vueuse/nuxt": "13.3.0",
|
|
43
|
+
"@tailwindcss/vite": "4.1.8",
|
|
44
44
|
"consola": "3.4.2",
|
|
45
45
|
"defu": "6.1.4",
|
|
46
46
|
"elrh-pslo": "1.1.6",
|
|
47
47
|
"nuxt-auth-utils": "0.5.20",
|
|
48
|
-
"nuxt-neon": "0.6.
|
|
48
|
+
"nuxt-neon": "0.6.2",
|
|
49
49
|
"nuxt-security": "2.2.0",
|
|
50
50
|
"nuxt-spec": "0.0.4",
|
|
51
51
|
"open-props": "1.7.15",
|
|
52
|
-
"pinia": "3.0.
|
|
52
|
+
"pinia": "3.0.3",
|
|
53
53
|
"postcss-jit-props": "1.0.16",
|
|
54
54
|
"typescript": "5.8.3"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"nuxt": "3.17.
|
|
58
|
-
"vue": "3.5.
|
|
57
|
+
"nuxt": "3.17.5",
|
|
58
|
+
"vue": "3.5.16",
|
|
59
59
|
"vue-router": "4.5.1"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
package/server/api/neonTest.ts
CHANGED
|
@@ -3,11 +3,13 @@ export default defineEventHandler(async () => {
|
|
|
3
3
|
if (config.preset.db === 'neon' || config.neon === true) {
|
|
4
4
|
return await select(
|
|
5
5
|
getNeonClient(),
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
{
|
|
7
|
+
columns: ['name', 'value'],
|
|
8
|
+
from: 'playing_with_neon',
|
|
9
|
+
where: { column: 'name', condition: 'LIKE', value: '\'test%\'' },
|
|
10
|
+
order: 'name DESC',
|
|
11
|
+
limit: 2,
|
|
12
|
+
},
|
|
11
13
|
)
|
|
12
14
|
} else {
|
|
13
15
|
return 'Neon DB module not enabled'
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
Nuxt Ignis will start using following settings:
|
|
2
|
+
Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, @nuxt/ui, nuxt-neon, @nuxtjs/supabase, @nuxtjs/i18n, @vueform/nuxt, @formkit/nuxt, @nuxtjs/seo, @nuxt/content, nuxt-auth-utils
|
|
3
|
+
Extras: Open Props CSS, elrh-pslo
|
|
4
|
+
Nuxt: log-level=info[default]
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
|
|
2
|
+
import { setFeatures } from '../features'
|
|
3
|
+
import { log } from '../utils/consola'
|
|
4
|
+
|
|
5
|
+
// `setFeatures()` is the core function that evaluates the environment variables
|
|
6
|
+
// and decides which features to enable in the user's Nuxt application
|
|
7
|
+
|
|
8
|
+
describe('setFeatures() unit tests', () => {
|
|
9
|
+
// store original process.env to restore it after tests
|
|
10
|
+
const OLD_ENV = process.env
|
|
11
|
+
|
|
12
|
+
// mock consola instance for listening to `setFeatures()` method output
|
|
13
|
+
const consoleSpy = vi.spyOn(log, 'info').mockImplementation(() => {})
|
|
14
|
+
|
|
15
|
+
// helper function to get the console output from the spy
|
|
16
|
+
function getConsoleOutput() {
|
|
17
|
+
return consoleSpy.mock.calls[0]![0] as string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
// restore env before each test
|
|
22
|
+
process.env = { ...OLD_ENV }
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
// clear the console spy after each test
|
|
27
|
+
vi.clearAllMocks()
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
// output with no settings provided
|
|
31
|
+
|
|
32
|
+
test('setFeatures() - default output', async () => {
|
|
33
|
+
expect(setFeatures).toBeDefined()
|
|
34
|
+
setFeatures()
|
|
35
|
+
expect(consoleSpy).toHaveBeenCalledOnce()
|
|
36
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/default.txt')
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// following test cases are checking whether presets are evaluated correctly
|
|
40
|
+
|
|
41
|
+
// preset - UI
|
|
42
|
+
|
|
43
|
+
test('setFeatures() - UI preset - nuxt-ui', async () => {
|
|
44
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'nuxt-ui'
|
|
45
|
+
setFeatures()
|
|
46
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-nuxt-ui.txt')
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
test('setFeatures() - UI preset - tailwind', async () => {
|
|
50
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'tailwind'
|
|
51
|
+
setFeatures()
|
|
52
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-tailwind.txt')
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
test('setFeatures() - UI preset - off', async () => {
|
|
56
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'off'
|
|
57
|
+
setFeatures()
|
|
58
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-off.txt')
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
test('setFeatures() - UI preset - invalid', async () => {
|
|
62
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'invalid'
|
|
63
|
+
setFeatures()
|
|
64
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-off.txt')
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
// UI - set directly
|
|
68
|
+
|
|
69
|
+
test('setFeatures() - UI - nuxt-ui', async () => {
|
|
70
|
+
process.env.NUXT_PUBLIC_IGNIS_UI = 'true'
|
|
71
|
+
setFeatures()
|
|
72
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-nuxt-ui.txt')
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
test('setFeatures() - UI - tailwind', async () => {
|
|
76
|
+
process.env.NUXT_PUBLIC_IGNIS_TAILWIND = 'true'
|
|
77
|
+
setFeatures()
|
|
78
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-tailwind.txt')
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
// preset - DB
|
|
82
|
+
|
|
83
|
+
test('setFeatures() - DB preset - neon', async () => {
|
|
84
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'neon'
|
|
85
|
+
setFeatures()
|
|
86
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-neon.txt')
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
test('setFeatures() - DB preset - supabase', async () => {
|
|
90
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'supabase'
|
|
91
|
+
setFeatures()
|
|
92
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-supabase.txt')
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
test('setFeatures() - DB preset - off', async () => {
|
|
96
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'off'
|
|
97
|
+
setFeatures()
|
|
98
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-off.txt')
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
test('setFeatures() - DB preset - invalid', async () => {
|
|
102
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'invalid'
|
|
103
|
+
setFeatures()
|
|
104
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-off.txt')
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
// DB - set directly
|
|
108
|
+
|
|
109
|
+
test('setFeatures() - DB - neon', async () => {
|
|
110
|
+
process.env.NUXT_PUBLIC_IGNIS_NEON = 'true'
|
|
111
|
+
setFeatures()
|
|
112
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-neon.txt')
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
test('setFeatures() - DB - supabase', async () => {
|
|
116
|
+
process.env.NUXT_PUBLIC_IGNIS_SUPABASE = 'true'
|
|
117
|
+
setFeatures()
|
|
118
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-supabase.txt')
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
// preset - forms
|
|
122
|
+
|
|
123
|
+
test('setFeatures() - forms preset - vueform', async () => {
|
|
124
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'vueform'
|
|
125
|
+
setFeatures()
|
|
126
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-vueform.txt')
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
test('setFeatures() - forms preset - formkit', async () => {
|
|
130
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'formkit'
|
|
131
|
+
setFeatures()
|
|
132
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-formkit.txt')
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
test('setFeatures() - forms preset - off', async () => {
|
|
136
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'off'
|
|
137
|
+
setFeatures()
|
|
138
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-off.txt')
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
test('setFeatures() - forms preset - invalid', async () => {
|
|
142
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'invalid'
|
|
143
|
+
setFeatures()
|
|
144
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-off.txt')
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
// forms - set directly
|
|
148
|
+
|
|
149
|
+
test('setFeatures() - forms - vueform', async () => {
|
|
150
|
+
process.env.NUXT_PUBLIC_IGNIS_VUEFORM = 'true'
|
|
151
|
+
setFeatures()
|
|
152
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-vueform.txt')
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
test('setFeatures() - forms - formkit', async () => {
|
|
156
|
+
process.env.NUXT_PUBLIC_IGNIS_FORMKIT_ENABLED = 'true'
|
|
157
|
+
setFeatures()
|
|
158
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-formkit.txt')
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
// disable "core" features
|
|
162
|
+
test('setFeatures() - disable core features', async () => {
|
|
163
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_ESLINT = 'false'
|
|
164
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_FONTS = 'false'
|
|
165
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_IMAGE = 'false'
|
|
166
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_PINIA = 'false'
|
|
167
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_SCRIPTS = 'false'
|
|
168
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_SECURITY = 'false'
|
|
169
|
+
process.env.NUXT_PUBLIC_IGNIS_CORE_VUEUSE = 'false'
|
|
170
|
+
setFeatures()
|
|
171
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/disable-core.txt')
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
// enable all features
|
|
175
|
+
test('setFeatures() - enable all features', async () => {
|
|
176
|
+
process.env.NUXT_PUBLIC_IGNIS_UI = 'true'
|
|
177
|
+
process.env.NUXT_PUBLIC_IGNIS_NEON = 'true'
|
|
178
|
+
process.env.NUXT_PUBLIC_IGNIS_SUPABASE = 'true'
|
|
179
|
+
process.env.NUXT_PUBLIC_IGNIS_I18N_ENABLED = 'true'
|
|
180
|
+
process.env.NUXT_PUBLIC_IGNIS_FORMKIT_ENABLED = 'true'
|
|
181
|
+
process.env.NUXT_PUBLIC_IGNIS_VUEFORM = 'true'
|
|
182
|
+
process.env.NUXT_PUBLIC_IGNIS_CONTENT = 'true'
|
|
183
|
+
process.env.NUXT_PUBLIC_IGNIS_OPENPROPS = 'true'
|
|
184
|
+
process.env.NUXT_PUBLIC_IGNIS_PSLO_ENABLED = 'true'
|
|
185
|
+
process.env.NUXT_PUBLIC_IGNIS_SEO = 'true'
|
|
186
|
+
process.env.NUXT_PUBLIC_IGNIS_AUTH = 'true'
|
|
187
|
+
process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES = 'false' // to avoid console log
|
|
188
|
+
setFeatures()
|
|
189
|
+
await expect(getConsoleOutput()).toMatchFileSnapshot('./features/enable-all.txt')
|
|
190
|
+
})
|
|
191
|
+
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCollection, defineContentConfig } from '@nuxt/content'
|
|
2
|
+
|
|
3
|
+
export default defineContentConfig({
|
|
4
|
+
// while it is not strictily necessary to have a default config file
|
|
5
|
+
// it produces warning during startup when not presented
|
|
6
|
+
collections: {
|
|
7
|
+
content: defineCollection({
|
|
8
|
+
source: '**',
|
|
9
|
+
type: 'page',
|
|
10
|
+
}),
|
|
11
|
+
},
|
|
12
|
+
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// this is basic "getting started" configuration example
|
|
2
|
+
// for more options check:
|
|
3
|
+
// https://vueform.com/docs/configuration
|
|
4
|
+
|
|
5
|
+
import en from '@vueform/vueform/locales/en'
|
|
6
|
+
import vueform from '@vueform/vueform/dist/vueform'
|
|
7
|
+
import { defineConfig } from '@vueform/vueform'
|
|
8
|
+
|
|
9
|
+
// add Vueform type definitions
|
|
10
|
+
import '@vueform/vueform/types/index.d.ts'
|
|
11
|
+
|
|
12
|
+
// add default CSS styles
|
|
13
|
+
// can be placed anywhere else in your project
|
|
14
|
+
import '@vueform/vueform/dist/vueform.css'
|
|
15
|
+
|
|
16
|
+
export default defineConfig({
|
|
17
|
+
theme: vueform,
|
|
18
|
+
locales: { en },
|
|
19
|
+
locale: 'en',
|
|
20
|
+
})
|
package/utils/content.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// this function adresses https://github.com/AloisSeckar/nuxt-ignis/issues/70
|
|
2
|
+
// Nuxt Content requires its configuration to be injected and config exported
|
|
3
|
+
// this normally happens in content.config.ts file in project root
|
|
4
|
+
// however, it is not possible to transfer this config file when extending a layer
|
|
5
|
+
// user only have to setup small custom config file in his own project
|
|
6
|
+
// more info in the docs
|
|
7
|
+
// TODO can this be changed? can layer's "auto-imports" be configured?
|
|
8
|
+
|
|
9
|
+
import { defu } from 'defu'
|
|
10
|
+
import { defineCollection } from '@nuxt/content'
|
|
11
|
+
import { log } from './consola'
|
|
12
|
+
|
|
13
|
+
// re-export so it can be called in target apps without '@nuxt/content' dependency
|
|
14
|
+
export function defineContentCollection(...args: Parameters<typeof defineCollection>) {
|
|
15
|
+
return defineCollection(...args)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// @ts-expect-error no-implicit-any
|
|
19
|
+
export async function loadContentConfig(userContentConfig) {
|
|
20
|
+
// only if content is allowed
|
|
21
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CONTENT === 'true') {
|
|
22
|
+
// get nuxt-ignis default
|
|
23
|
+
const defaultContentConfig = await import('./config/content.config')
|
|
24
|
+
// merge with possible user values
|
|
25
|
+
const contentConfig = defu(userContentConfig, defaultContentConfig.default)
|
|
26
|
+
return contentConfig
|
|
27
|
+
}
|
|
28
|
+
// otherwise there is nothing to load
|
|
29
|
+
log.warn('@nuxt/content is not enabled, ensure you have NUXT_PUBLIC_IGNIS_CONTENT=true')
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// TEMPORARY FIX for https://github.com/tailwindlabs/tailwindcss/discussions/16119
|
|
2
|
+
export const ignisTailwindcssFix = {
|
|
3
|
+
name: 'vite-plugin-ignore-sourcemap-warnings',
|
|
4
|
+
apply: 'build',
|
|
5
|
+
// @ts-expect-error no-implicit-any
|
|
6
|
+
configResolved(config) {
|
|
7
|
+
// @ts-expect-error no-implicit-any
|
|
8
|
+
config.build.rollupOptions.onwarn = (warning, warn) => {
|
|
9
|
+
if (
|
|
10
|
+
warning.code === 'SOURCEMAP_BROKEN'
|
|
11
|
+
&& warning.plugin === '@tailwindcss/vite:generate:build'
|
|
12
|
+
) {
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
warn(warning)
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
}
|
package/utils/vueform.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// this function adresses https://github.com/AloisSeckar/nuxt-ignis/issues/71
|
|
2
|
+
// Vueform requires its configuration to be injected and config exported
|
|
3
|
+
// this normally happens in vueform.config.ts file in project root
|
|
4
|
+
// however, it is not possible to transfer this config file when extending a layer
|
|
5
|
+
// user only have to setup small custom config file in his own project
|
|
6
|
+
// more info in the docs
|
|
7
|
+
// TODO can this be changed? can layer's "auto-imports" be configured?
|
|
8
|
+
|
|
9
|
+
export async function loadDefaultVueformConfig() {
|
|
10
|
+
const config = useRuntimeConfig().public.ignis
|
|
11
|
+
if (config.preset.forms === 'vueform' || config.vueform === true) {
|
|
12
|
+
const vueformConfig = await import('./config/vueform.config')
|
|
13
|
+
return vueformConfig.default
|
|
14
|
+
}
|
|
15
|
+
return null
|
|
16
|
+
}
|
package/vueform.config.ts
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// https://vueform.com/docs/configuration
|
|
1
|
+
// minimal config for Vueform
|
|
2
|
+
// currently required to be loaded like this...
|
|
4
3
|
|
|
5
|
-
import en from '@vueform/vueform/locales/en'
|
|
6
|
-
import vueform from '@vueform/vueform/dist/vueform'
|
|
7
4
|
import { defineConfig } from '@vueform/vueform'
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
import '@vueform/vueform/types/index.d.ts'
|
|
6
|
+
const vueformConfig = await loadDefaultVueformConfig()
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
// can be placed anywhere else in your project
|
|
14
|
-
import '@vueform/vueform/dist/vueform.css'
|
|
15
|
-
|
|
16
|
-
export default defineConfig({
|
|
17
|
-
theme: vueform,
|
|
18
|
-
locales: { en },
|
|
19
|
-
locale: 'en',
|
|
20
|
-
})
|
|
8
|
+
export default defineConfig(vueformConfig!)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default {}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "file:///C:/Git/nuxt-ignis/core/node_modules/.pnpm/@nuxt+vite-builder@3.17.4_@_1e4eaac97c7526a7ec98fffee6b1d729/node_modules/@nuxt/vite-builder/dist/runtime/vite-node.mjs"
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 21. 5. 2025 21:21:52
|
|
2
|
-
import "@nuxtjs/tailwindcss/config-ctx"
|
|
3
|
-
import configMerger from "@nuxtjs/tailwindcss/merger";
|
|
4
|
-
|
|
5
|
-
import cfg2 from "./../../tailwind.config.ts";
|
|
6
|
-
const config = [
|
|
7
|
-
{"content":{"files":["C:/Git/nuxt-ignis/core/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/plugins/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/composables/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/utils/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/app.config.{js,ts,mjs}","C:/Git/nuxt-ignis/core/app/spa-loading-template.html"]}},
|
|
8
|
-
{},
|
|
9
|
-
cfg2,
|
|
10
|
-
{"content":{"files":["C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/plugins/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/composables/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/utils/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/app.config.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/app/spa-loading-template.html"]}}
|
|
11
|
-
].reduce((acc, curr) => configMerger(acc, curr), {});
|
|
12
|
-
|
|
13
|
-
const resolvedConfig = config;
|
|
14
|
-
|
|
15
|
-
export default resolvedConfig;
|