@@ -5,12 +5,14 @@ import { mkdirSync, rmSync, writeFileSync } from 'fs'
5
5
6
6
// Types
7
7
import type { ContextState } from './utils/prompts'
8
+ import type { NuxtPresetName } from './utils/presets'
8
9
9
10
// Utils
10
11
import { initPrompts } from './utils/prompts'
11
12
import { red } from 'kolorist'
12
13
import minimist from 'minimist'
13
14
import { installDependencies , renderTemplate } from './utils'
15
+ import { renderNuxtTemplate } from './utils/nuxt/renderNuxtTemplate'
14
16
15
17
const validPresets = [ 'base' , 'custom' , 'default' , 'essentials' ]
16
18
@@ -48,6 +50,12 @@ async function run () {
48
50
usePackageManager,
49
51
installDependencies : installDeps ,
50
52
usePreset,
53
+ useStore,
54
+ useEslint,
55
+ useNuxtV4Compat,
56
+ useNuxtModule,
57
+ useNuxtSSR,
58
+ useNuxtSSRClientHints,
51
59
} = await initPrompts ( context )
52
60
53
61
const projectRoot = join ( cwd , projectName )
@@ -57,30 +65,51 @@ async function run () {
57
65
rmSync ( projectRoot , { recursive : true } )
58
66
}
59
67
60
- // Create project directory
61
- mkdirSync ( projectRoot )
68
+ const preset = context . usePreset ?? usePreset
69
+
70
+ if ( preset . startsWith ( 'nuxt-' ) ) {
71
+ const templateRoot = resolve ( dirname ( fileURLToPath ( import . meta. url ) ) , '../template/typescript' )
72
+ const templatePath = resolve ( dirname ( fileURLToPath ( import . meta. url ) ) , '../template/typescript/nuxt' )
73
+ // we are going to run Nuxi CLI that will handle the creation for us
74
+ await renderNuxtTemplate ( {
75
+ cwd,
76
+ projectName,
77
+ projectRoot,
78
+ templateRoot,
79
+ templatePath,
80
+ nuxtPreset : preset as NuxtPresetName ,
81
+ useNuxtV4Compat,
82
+ useNuxtModule,
83
+ useNuxtSSR,
84
+ useNuxtSSRClientHints,
85
+ } )
86
+ }
87
+ else {
88
+ // Create project directory
89
+ mkdirSync ( projectRoot )
62
90
63
- // Create base package.json
64
- writeFileSync ( resolve ( projectRoot , 'package.json' ) , JSON . stringify ( { name : projectName } , null , 2 ) )
91
+ // Create base package.json
92
+ writeFileSync ( resolve ( projectRoot , 'package.json' ) , JSON . stringify ( { name : projectName } , null , 2 ) )
65
93
66
- const jsOrTs = useTypeScript ? 'typescript' : 'javascript'
67
- let templatePath = resolve ( dirname ( fileURLToPath ( import . meta. url ) ) , '../template' , jsOrTs )
94
+ console . log ( '\n◌ Generating scaffold...' )
68
95
69
- console . log ( '\n◌ Generating scaffold...' )
96
+ const jsOrTs = useTypeScript ? 'typescript' : 'javascript'
97
+ let templatePath = resolve ( dirname ( fileURLToPath ( import . meta. url ) ) , '../template' , jsOrTs )
70
98
71
- renderTemplate ( resolve ( templatePath , 'default' ) , projectRoot )
99
+ renderTemplate ( resolve ( templatePath , 'default' ) , projectRoot )
72
100
73
- if ( [ 'base' , 'essentials' ] . includes ( usePreset ) ) {
74
- renderTemplate ( resolve ( templatePath , 'base' ) , projectRoot )
75
- }
101
+ if ( [ 'base' , 'essentials' ] . includes ( usePreset ) ) {
102
+ renderTemplate ( resolve ( templatePath , 'base' ) , projectRoot )
103
+ }
76
104
77
- if ( [ 'essentials' , 'recommended' ] . includes ( usePreset ) ) {
78
- renderTemplate ( resolve ( templatePath , 'essentials' ) , projectRoot )
79
- }
105
+ if ( [ 'essentials' , 'recommended' ] . includes ( usePreset ) ) {
106
+ renderTemplate ( resolve ( templatePath , 'essentials' ) , projectRoot )
107
+ }
80
108
81
- if ( usePackageManager && installDeps ) {
82
- console . log ( `◌ Installing dependencies with ${ usePackageManager } ...\n` )
83
- installDependencies ( projectRoot , usePackageManager )
109
+ if ( usePackageManager && installDeps ) {
110
+ console . log ( `◌ Installing dependencies with ${ usePackageManager } ...\n` )
111
+ installDependencies ( projectRoot , usePackageManager )
112
+ }
84
113
}
85
114
86
115
console . log ( `\n${ projectName } has been generated at ${ projectRoot } \n` )
91
120
console . log ( 'Discord community: https://community.vuetifyjs.com' )
92
121
console . log ( 'Github: https://github.com/vuetifyjs/vuetify' )
93
122
console . log ( 'Support Vuetify: https://github.com/sponsors/johnleider' )
123
+ process . exit ( 0 )
94
124
} )
95
125
. catch ( ( err ) => {
96
126
console . error ( `\n${ red ( '✖' ) } ${ err } \n` )
0 commit comments