@@ -10,8 +10,10 @@ import {copy} from '../../util/copy'
10
10
import { getAndWriteJourneySchemaWorker } from '../../util/journeyConfig'
11
11
import { resolveLatestVersions } from '../../util/resolveLatestVersions'
12
12
import { createCliConfig } from './createCliConfig'
13
+ import { createCoreAppCliConfig } from './createCoreAppCliConfig'
13
14
import { createPackageManifest } from './createPackageManifest'
14
15
import { createStudioConfig , type GenerateConfigOptions } from './createStudioConfig'
16
+ import { determineCoreAppTemplate } from './determineCoreAppTemplate'
15
17
import { type ProjectTemplate } from './initProject'
16
18
import templates from './templates'
17
19
import { updateInitialTemplateMetadata } from './updateInitialTemplateMetadata'
@@ -36,9 +38,9 @@ export async function bootstrapLocalTemplate(
36
38
const { apiClient, cliRoot, output} = context
37
39
const templatesDir = path . join ( cliRoot , 'templates' )
38
40
const { outputPath, templateName, useTypeScript, packageName, variables} = opts
39
- const { projectId} = variables
40
41
const sourceDir = path . join ( templatesDir , templateName )
41
42
const sharedDir = path . join ( templatesDir , 'shared' )
43
+ const isCoreAppTemplate = determineCoreAppTemplate ( templateName )
42
44
43
45
// Check that we have a template info file (dependencies, plugins etc)
44
46
const template = templates [ templateName ]
@@ -81,15 +83,16 @@ export async function bootstrapLocalTemplate(
81
83
// Resolve latest versions of Sanity-dependencies
82
84
spinner = output . spinner ( 'Resolving latest module versions' ) . start ( )
83
85
const dependencyVersions = await resolveLatestVersions ( {
84
- ...studioDependencies . dependencies ,
85
- ...studioDependencies . devDependencies ,
86
+ ...( isCoreAppTemplate ? { } : studioDependencies . dependencies ) ,
87
+ ...( isCoreAppTemplate ? { } : studioDependencies . devDependencies ) ,
86
88
...( template . dependencies || { } ) ,
89
+ ...( template . devDependencies || { } ) ,
87
90
} )
88
91
spinner . succeed ( )
89
92
90
93
// Use the resolved version for the given dependency
91
94
const dependencies = Object . keys ( {
92
- ...studioDependencies . dependencies ,
95
+ ...( isCoreAppTemplate ? { } : studioDependencies . dependencies ) ,
93
96
...template . dependencies ,
94
97
} ) . reduce (
95
98
( deps , dependency ) => {
@@ -100,7 +103,7 @@ export async function bootstrapLocalTemplate(
100
103
)
101
104
102
105
const devDependencies = Object . keys ( {
103
- ...studioDependencies . devDependencies ,
106
+ ...( isCoreAppTemplate ? { } : studioDependencies . devDependencies ) ,
104
107
...template . devDependencies ,
105
108
} ) . reduce (
106
109
( deps , dependency ) => {
@@ -116,32 +119,41 @@ export async function bootstrapLocalTemplate(
116
119
name : packageName ,
117
120
dependencies,
118
121
devDependencies,
122
+ scripts : template . scripts ,
119
123
} )
120
124
121
125
// ...and a studio config (`sanity.config.[ts|js]`)
122
- const studioConfig = await createStudioConfig ( {
126
+ const studioConfig = createStudioConfig ( {
123
127
template : template . configTemplate ,
124
128
variables,
125
129
} )
126
130
127
131
// ...and a CLI config (`sanity.cli.[ts|js]`)
128
- const cliConfig = await createCliConfig ( {
129
- projectId : variables . projectId ,
130
- dataset : variables . dataset ,
131
- autoUpdates : variables . autoUpdates ,
132
- } )
132
+ const cliConfig = isCoreAppTemplate
133
+ ? createCoreAppCliConfig ( { appLocation : template . appLocation ! } )
134
+ : createCliConfig ( {
135
+ projectId : variables . projectId ,
136
+ dataset : variables . dataset ,
137
+ autoUpdates : variables . autoUpdates ,
138
+ } )
133
139
134
140
// Write non-template files to disc
135
141
const codeExt = useTypeScript ? 'ts' : 'js'
136
- await Promise . all ( [
137
- writeFileIfNotExists ( `sanity.config.${ codeExt } ` , studioConfig ) ,
138
- writeFileIfNotExists ( `sanity.cli.${ codeExt } ` , cliConfig ) ,
139
- writeFileIfNotExists ( 'package.json' , packageManifest ) ,
140
- writeFileIfNotExists (
141
- 'eslint.config.mjs' ,
142
- `import studio from '@sanity/eslint-config-studio'\n\nexport default [...studio]\n` ,
143
- ) ,
144
- ] )
142
+ await Promise . all (
143
+ [
144
+ ...[
145
+ isCoreAppTemplate
146
+ ? Promise . resolve ( null )
147
+ : writeFileIfNotExists ( `sanity.config.${ codeExt } ` , studioConfig ) ,
148
+ ] ,
149
+ writeFileIfNotExists ( `sanity.cli.${ codeExt } ` , cliConfig ) ,
150
+ writeFileIfNotExists ( 'package.json' , packageManifest ) ,
151
+ writeFileIfNotExists (
152
+ 'eslint.config.mjs' ,
153
+ `import studio from '@sanity/eslint-config-studio'\n\nexport default [...studio]\n` ,
154
+ ) ,
155
+ ] . filter ( Boolean ) ,
156
+ )
145
157
146
158
debug ( 'Updating initial template metadata' )
147
159
await updateInitialTemplateMetadata ( apiClient , variables . projectId , `cli-${ templateName } ` )
0 commit comments