@shopify/create-hydrogen 3.0.25 → 3.0.26
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/CHANGELOG.md +19 -0
- package/dist/commands/init.d.ts +15 -0
- package/dist/commands/init.js +70 -322
- package/dist/commands/init.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +7 -24
- package/dist/index.js.map +1 -1
- package/dist/prompts/init.d.ts +7 -0
- package/dist/prompts/init.js +71 -0
- package/dist/prompts/init.js.map +1 -0
- package/dist/services/init.d.ts +12 -0
- package/dist/services/init.js +204 -0
- package/dist/services/init.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/template.d.ts +4 -0
- package/dist/utils/template.js +12 -0
- package/dist/utils/template.js.map +1 -0
- package/package.json +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @shopify/create-hydrogen
|
|
2
2
|
|
|
3
|
+
## 3.0.26
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 022a4e24: Internal: build cli-kit using tsc instead of rollup+esbuild
|
|
8
|
+
- e81e52b1: Report error events
|
|
9
|
+
- 2d8e4458: Log Listr task titles to logfile
|
|
10
|
+
- Updated dependencies [dbcffdbb]
|
|
11
|
+
- Updated dependencies [022a4e24]
|
|
12
|
+
- Updated dependencies [e81e52b1]
|
|
13
|
+
- Updated dependencies [c16035f1]
|
|
14
|
+
- Updated dependencies [61f595df]
|
|
15
|
+
- Updated dependencies [87f7843f]
|
|
16
|
+
- Updated dependencies [8ff4e3d7]
|
|
17
|
+
- Updated dependencies [168bb4c6]
|
|
18
|
+
- Updated dependencies [0a9dbc63]
|
|
19
|
+
- Updated dependencies [2d8e4458]
|
|
20
|
+
- @shopify/cli-kit@3.0.26
|
|
21
|
+
|
|
3
22
|
## 3.0.25
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Init extends Command {
|
|
3
|
+
static flags: {
|
|
4
|
+
name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
|
|
5
|
+
template: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
|
|
6
|
+
path: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
|
|
7
|
+
'dependency-manager': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
|
|
8
|
+
'shopify-cli-version': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
|
|
9
|
+
'hydrogen-version': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined>;
|
|
10
|
+
local: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
startEvent(): Promise<void>;
|
|
15
|
+
}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,327 +1,75 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const withExtension = normalized.endsWith("-ts") || normalized.endsWith("-js") ? normalized : `${normalized}-js`;
|
|
25
|
-
return TEMPLATE_NAMES.includes(withExtension) ? withExtension : false;
|
|
26
|
-
}
|
|
27
|
-
function toHydrogenTemplateUrl(key) {
|
|
28
|
-
return `${TEMPLATE_BASE}${key}#${BRANCH}`;
|
|
29
|
-
}
|
|
30
|
-
const init$1 = async (options, prompt = ui.prompt) => {
|
|
31
|
-
const questions = [];
|
|
32
|
-
if (!options.name) {
|
|
33
|
-
questions.push({
|
|
34
|
-
type: "input",
|
|
35
|
-
name: "name",
|
|
36
|
-
message: "Name your new Hydrogen storefront",
|
|
37
|
-
default: "hydrogen-app"
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
let explicitTemplate = options.template;
|
|
41
|
-
if (explicitTemplate) {
|
|
42
|
-
const hydrogenTemplate = toHydrogenTemplateName(explicitTemplate);
|
|
43
|
-
if (hydrogenTemplate) {
|
|
44
|
-
const url = toHydrogenTemplateUrl(hydrogenTemplate);
|
|
45
|
-
explicitTemplate = url;
|
|
1
|
+
import initPrompt from '../prompts/init.js';
|
|
2
|
+
import initService from '../services/init.js';
|
|
3
|
+
import { path, cli, analytics } from '@shopify/cli-kit';
|
|
4
|
+
import { Command, Flags } from '@oclif/core';
|
|
5
|
+
export default class Init extends Command {
|
|
6
|
+
async run() {
|
|
7
|
+
this.startEvent();
|
|
8
|
+
const { flags } = await this.parse(Init);
|
|
9
|
+
const directory = flags.path ? path.resolve(flags.path) : process.cwd();
|
|
10
|
+
const promptAnswers = await initPrompt({
|
|
11
|
+
name: flags.name,
|
|
12
|
+
template: flags.template,
|
|
13
|
+
});
|
|
14
|
+
await initService({
|
|
15
|
+
name: promptAnswers.name,
|
|
16
|
+
template: promptAnswers.template,
|
|
17
|
+
dependencyManager: flags['dependency-manager'],
|
|
18
|
+
shopifyCliVersion: flags['shopify-cli-version'],
|
|
19
|
+
hydrogenVersion: flags['hydrogen-version'],
|
|
20
|
+
directory,
|
|
21
|
+
local: flags.local,
|
|
22
|
+
});
|
|
23
|
+
await analytics.reportEvent();
|
|
46
24
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
} else {
|
|
52
|
-
questions.push({
|
|
53
|
-
type: "select",
|
|
54
|
-
name: "template",
|
|
55
|
-
message: "Choose a template",
|
|
56
|
-
choices: Object.keys(TEMPLATE_DATA).map((value) => ({
|
|
57
|
-
name: TEMPLATE_DATA[value].description,
|
|
58
|
-
value
|
|
59
|
-
})),
|
|
60
|
-
default: TEMPLATE_NAMES[0],
|
|
61
|
-
result: toHydrogenTemplateUrl
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
const { template = explicitTemplate, ...promptOutput } = await prompt(questions);
|
|
65
|
-
return { ...options, ...promptOutput, template };
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
var version$1 = "3.0.25";
|
|
69
|
-
|
|
70
|
-
var version = "3.0.25";
|
|
71
|
-
|
|
72
|
-
const suggestHydrogenSupport = () => `
|
|
73
|
-
Help us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.
|
|
74
|
-
- Chat with us on Discord: https://discord.com/invite/ppSbThrFaS
|
|
75
|
-
- Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new
|
|
76
|
-
`;
|
|
77
|
-
async function init(options) {
|
|
78
|
-
const user = await os.username() ?? "";
|
|
79
|
-
const cliPackageVersion = options.shopifyCliVersion ?? version;
|
|
80
|
-
const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? version$1;
|
|
81
|
-
const hydrogenPackageVersion = options.hydrogenVersion;
|
|
82
|
-
const dependencyManager = inferDependencyManager(options.dependencyManager);
|
|
83
|
-
const hyphenizedName = string.hyphenize(options.name);
|
|
84
|
-
const outputDirectory = path.join(options.directory, hyphenizedName);
|
|
85
|
-
await ui.nonEmptyDirectoryPrompt(outputDirectory);
|
|
86
|
-
await file.inTemporaryDirectory(async (tmpDir) => {
|
|
87
|
-
const templateDownloadDir = path.join(tmpDir, "download");
|
|
88
|
-
const templateScaffoldDir = path.join(tmpDir, "app");
|
|
89
|
-
await file.mkdir(templateDownloadDir);
|
|
90
|
-
await file.mkdir(templateScaffoldDir);
|
|
91
|
-
let tasks = [];
|
|
92
|
-
const templateInfo = await github.parseRepoUrl(options.template);
|
|
93
|
-
const branch = templateInfo.ref ? `#${templateInfo.ref}` : "";
|
|
94
|
-
const templatePath = templateInfo.subDirectory ? path.join(templateDownloadDir, templateInfo.subDirectory) : templateDownloadDir;
|
|
95
|
-
tasks = tasks.concat([
|
|
96
|
-
{
|
|
97
|
-
title: "Downloading template",
|
|
98
|
-
task: async (_, task) => {
|
|
99
|
-
const url = `${templateInfo.http}${branch}`;
|
|
100
|
-
await git.downloadRepository({
|
|
101
|
-
repoUrl: url,
|
|
102
|
-
destination: templateDownloadDir,
|
|
103
|
-
shallow: true,
|
|
104
|
-
progressUpdater: (statusString) => {
|
|
105
|
-
const taskOutput = `Cloning template from ${url}:
|
|
106
|
-
${statusString}`;
|
|
107
|
-
task.output = taskOutput;
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
if (!await file.exists(path.join(templatePath, "package.json"))) {
|
|
111
|
-
throw new error.Abort(`The template ${templatePath} was not found.`, suggestHydrogenSupport());
|
|
112
|
-
}
|
|
113
|
-
task.title = "Template downloaded";
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
title: `Initializing your app ${hyphenizedName}`,
|
|
118
|
-
task: async (_, parentTask) => {
|
|
119
|
-
return parentTask.newListr([
|
|
120
|
-
{
|
|
121
|
-
title: "Parsing template files",
|
|
122
|
-
task: async (_2, task) => {
|
|
123
|
-
const templateData = {
|
|
124
|
-
name: hyphenizedName,
|
|
125
|
-
shopify_cli_version: cliPackageVersion,
|
|
126
|
-
hydrogen_version: hydrogenPackageVersion,
|
|
127
|
-
author: user,
|
|
128
|
-
dependency_manager: options.dependencyManager
|
|
129
|
-
};
|
|
130
|
-
await template.recursiveDirectoryCopy(templatePath, templateScaffoldDir, templateData);
|
|
131
|
-
task.title = "Template files parsed";
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
title: "Updating package.json",
|
|
136
|
-
task: async (_2, task) => {
|
|
137
|
-
const packageJSON = await npm.readPackageJSON(templateScaffoldDir);
|
|
138
|
-
await npm.updateAppData(packageJSON, hyphenizedName);
|
|
139
|
-
await updateCLIDependencies(packageJSON, options.local, {
|
|
140
|
-
dependencies: {
|
|
141
|
-
"@shopify/hydrogen": hydrogenPackageVersion
|
|
142
|
-
},
|
|
143
|
-
devDependencies: {
|
|
144
|
-
"@shopify/cli-hydrogen": cliHydrogenPackageVersion,
|
|
145
|
-
"@shopify/cli": cliPackageVersion
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
await updateCLIScripts(packageJSON);
|
|
149
|
-
await npm.writePackageJSON(templateScaffoldDir, packageJSON);
|
|
150
|
-
task.title = "Package.json updated";
|
|
151
|
-
parentTask.title = "App initialized";
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
], { concurrent: false });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
]);
|
|
158
|
-
if (await environment.local.isShopify()) {
|
|
159
|
-
tasks.push({
|
|
160
|
-
title: "[Shopifolks-only] Configuring the project's NPM registry",
|
|
161
|
-
task: async (_, task) => {
|
|
162
|
-
const npmrcPath = path.join(templateScaffoldDir, ".npmrc");
|
|
163
|
-
const npmrcContent = `@shopify:registry=https://registry.npmjs.org`;
|
|
164
|
-
await file.write(npmrcPath, npmrcContent);
|
|
165
|
-
task.title = "[Shopifolks-only] Project's NPM registry configured.";
|
|
166
|
-
}
|
|
167
|
-
});
|
|
25
|
+
async startEvent() {
|
|
26
|
+
const commandIndex = process.argv.indexOf('init');
|
|
27
|
+
const args = process.argv.slice(commandIndex + 1).join(' ');
|
|
28
|
+
analytics.start({ command: 'create-hydrogen', args });
|
|
168
29
|
}
|
|
169
|
-
tasks = tasks.concat([
|
|
170
|
-
{
|
|
171
|
-
title: `Installing dependencies with ${dependencyManager}`,
|
|
172
|
-
task: async (_, task) => {
|
|
173
|
-
const stdout = new Writable({
|
|
174
|
-
write(chunk, encoding, next) {
|
|
175
|
-
task.output = chunk.toString();
|
|
176
|
-
next();
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
await installDependencies(templateScaffoldDir, dependencyManager, stdout);
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
title: "Cleaning up",
|
|
184
|
-
task: async (_, task) => {
|
|
185
|
-
await cleanup(templateScaffoldDir);
|
|
186
|
-
task.title = "Completed clean up";
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
]);
|
|
190
|
-
const list = new ui.Listr(tasks, {
|
|
191
|
-
concurrent: false,
|
|
192
|
-
rendererOptions: { collapse: false },
|
|
193
|
-
rendererSilent: environment.local.isUnitTest()
|
|
194
|
-
});
|
|
195
|
-
await list.run();
|
|
196
|
-
await file.move(templateScaffoldDir, outputDirectory);
|
|
197
|
-
});
|
|
198
|
-
output.info(output.content`
|
|
199
|
-
✨ ${hyphenizedName} is ready to build!
|
|
200
|
-
🚀 Run ${output.token.packagejsonScript(dependencyManager, "dev")} to start your local development server and start building.
|
|
201
|
-
|
|
202
|
-
📚 Docs: ${output.token.link("Quick start guide", "https://shopify.dev/custom-storefronts/hydrogen")}`);
|
|
203
|
-
output.info(output.content`
|
|
204
|
-
👋 Note: your project will display inventory from the Hydrogen Demo Store.\
|
|
205
|
-
To connect this project to your Shopify store’s inventory instead,\
|
|
206
|
-
update ${output.token.yellow(`${hyphenizedName}/hydrogen.config.js`)} with your\
|
|
207
|
-
store ID and Storefront API key.\n`);
|
|
208
|
-
}
|
|
209
|
-
function inferDependencyManager(optionsDependencyManager) {
|
|
210
|
-
if (optionsDependencyManager && dependency.dependencyManager.includes(optionsDependencyManager)) {
|
|
211
|
-
return optionsDependencyManager;
|
|
212
|
-
}
|
|
213
|
-
return dependency.dependencyManagerUsedForCreating();
|
|
214
30
|
}
|
|
215
|
-
async function updateCLIScripts(packageJSON) {
|
|
216
|
-
packageJSON.scripts.dev = `shopify hydrogen dev`;
|
|
217
|
-
return packageJSON;
|
|
218
|
-
}
|
|
219
|
-
async function updateCLIDependencies(packageJSON, local, packageDependencies) {
|
|
220
|
-
const { devDependencies, dependencies } = packageDependencies;
|
|
221
|
-
packageJSON.devDependencies = packageJSON.devDependencies || {};
|
|
222
|
-
packageJSON.dependencies = packageJSON.dependencies || {};
|
|
223
|
-
Object.keys(devDependencies).forEach((key) => {
|
|
224
|
-
packageJSON.devDependencies[key] = devDependencies[key] || packageJSON.devDependencies[key];
|
|
225
|
-
});
|
|
226
|
-
Object.keys(dependencies).forEach((key) => {
|
|
227
|
-
packageJSON.dependencies[key] = dependencies[key] || packageJSON.dependencies[key];
|
|
228
|
-
});
|
|
229
|
-
if (local) {
|
|
230
|
-
const devDependencyOverrides = {
|
|
231
|
-
"@shopify/cli": `file:${await path.findUp("packages/cli-main", { type: "directory" })}`,
|
|
232
|
-
"@shopify/cli-hydrogen": `file:${await path.findUp("packages/cli-hydrogen", { type: "directory" })}`
|
|
233
|
-
};
|
|
234
|
-
packageJSON.overrides = packageJSON.overrides ? { ...packageJSON.overrides, ...devDependencyOverrides } : devDependencyOverrides;
|
|
235
|
-
packageJSON.resolutions = packageJSON.resolutions ? { ...packageJSON.resolutions, ...devDependencyOverrides } : devDependencyOverrides;
|
|
236
|
-
}
|
|
237
|
-
return packageJSON;
|
|
238
|
-
}
|
|
239
|
-
async function installDependencies(directory, dependencyManager, stdout) {
|
|
240
|
-
await dependency.install(directory, dependencyManager, stdout);
|
|
241
|
-
}
|
|
242
|
-
async function cleanup(webOutputDirectory) {
|
|
243
|
-
const gitPaths = await path.glob([
|
|
244
|
-
path.join(webOutputDirectory, "**", ".git"),
|
|
245
|
-
path.join(webOutputDirectory, "**", ".github"),
|
|
246
|
-
path.join(webOutputDirectory, "**", ".gitmodules"),
|
|
247
|
-
path.join(webOutputDirectory, ".stackblitzrc")
|
|
248
|
-
], {
|
|
249
|
-
dot: true,
|
|
250
|
-
onlyFiles: false,
|
|
251
|
-
onlyDirectories: false,
|
|
252
|
-
ignore: ["**/node_modules/**"]
|
|
253
|
-
});
|
|
254
|
-
return Promise.all(gitPaths.map((path2) => file.rmdir(path2, { force: true }))).then(() => {
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
const _Init = class extends Command {
|
|
259
|
-
async run() {
|
|
260
|
-
const { flags } = await this.parse(_Init);
|
|
261
|
-
const directory = flags.path ? path.resolve(flags.path) : process.cwd();
|
|
262
|
-
const promptAnswers = await init$1({
|
|
263
|
-
name: flags.name,
|
|
264
|
-
template: flags.template
|
|
265
|
-
});
|
|
266
|
-
await init({
|
|
267
|
-
name: promptAnswers.name,
|
|
268
|
-
template: promptAnswers.template,
|
|
269
|
-
dependencyManager: flags["dependency-manager"],
|
|
270
|
-
shopifyCliVersion: flags["shopify-cli-version"],
|
|
271
|
-
hydrogenVersion: flags["hydrogen-version"],
|
|
272
|
-
directory,
|
|
273
|
-
local: flags.local
|
|
274
|
-
});
|
|
275
|
-
await this.reportEvent();
|
|
276
|
-
}
|
|
277
|
-
async reportEvent() {
|
|
278
|
-
const commandIndex = process.argv.indexOf("init");
|
|
279
|
-
const args = process.argv.slice(commandIndex + 1);
|
|
280
|
-
await analytics.reportEvent("create-app", args);
|
|
281
|
-
}
|
|
282
|
-
};
|
|
283
|
-
let Init = _Init;
|
|
284
31
|
Init.flags = {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
32
|
+
...cli.globalFlags,
|
|
33
|
+
name: Flags.string({
|
|
34
|
+
char: 'n',
|
|
35
|
+
env: 'SHOPIFY_FLAG_NAME',
|
|
36
|
+
hidden: false,
|
|
37
|
+
}),
|
|
38
|
+
template: Flags.string({
|
|
39
|
+
char: 't',
|
|
40
|
+
env: 'SHOPIFY_FLAG_TEMPLATE',
|
|
41
|
+
hidden: false,
|
|
42
|
+
}),
|
|
43
|
+
path: Flags.string({
|
|
44
|
+
char: 'p',
|
|
45
|
+
env: 'SHOPIFY_FLAG_PATH',
|
|
46
|
+
parse: (input, _) => Promise.resolve(path.resolve(input)),
|
|
47
|
+
hidden: false,
|
|
48
|
+
}),
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
50
|
+
'dependency-manager': Flags.string({
|
|
51
|
+
char: 'd',
|
|
52
|
+
env: 'SHOPIFY_FLAG_DEPENDENCY_MANAGER',
|
|
53
|
+
hidden: false,
|
|
54
|
+
options: ['npm', 'yarn', 'pnpm'],
|
|
55
|
+
}),
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
57
|
+
'shopify-cli-version': Flags.string({
|
|
58
|
+
char: 's',
|
|
59
|
+
env: 'SHOPIFY_FLAG_SHOPIFY_CLI_VERSION',
|
|
60
|
+
hidden: false,
|
|
61
|
+
}),
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
63
|
+
'hydrogen-version': Flags.string({
|
|
64
|
+
char: 'h',
|
|
65
|
+
env: 'SHOPIFY_FLAG_HYDROGEN_VERSION',
|
|
66
|
+
hidden: false,
|
|
67
|
+
}),
|
|
68
|
+
local: Flags.boolean({
|
|
69
|
+
char: 'l',
|
|
70
|
+
env: 'SHOPIFY_FLAG_LOCAL',
|
|
71
|
+
default: false,
|
|
72
|
+
hidden: true,
|
|
73
|
+
}),
|
|
324
74
|
};
|
|
325
|
-
|
|
326
|
-
export { Init as default };
|
|
327
|
-
//# sourceMappingURL=init.js.map
|
|
75
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sources":["../../src/prompts/init.ts","../../src/services/init.ts","../../src/commands/init.ts"],"sourcesContent":["import {ui, github, string} from '@shopify/cli-kit'\n\nconst TEMPLATE_BASE = 'https://github.com/Shopify/hydrogen/templates/'\nconst BRANCH = `dist`\nconst TEMPLATE_DATA = {\n /* eslint-disable @typescript-eslint/naming-convention */\n 'demo-store-js': {\n description: 'Demo Store',\n },\n 'demo-store-ts': {\n description: 'Demo Store (TypeScript)',\n },\n 'hello-world-js': {\n description: 'Hello World',\n },\n 'hello-world-ts': {\n description: 'Hello World (TypeScript)',\n },\n /* eslint-enable @typescript-eslint/naming-convention */\n}\n\nconst TEMPLATE_NAMES = Object.keys(TEMPLATE_DATA)\n\nfunction toHydrogenTemplateName(key: string) {\n const normalized = string.hyphenize(key).toLocaleLowerCase()\n const withExtension = normalized.endsWith('-ts') || normalized.endsWith('-js') ? normalized : `${normalized}-js`\n\n return TEMPLATE_NAMES.includes(withExtension) ? withExtension : false\n}\n\nfunction toHydrogenTemplateUrl(key: string) {\n return `${TEMPLATE_BASE}${key}#${BRANCH}`\n}\n\ninterface InitOptions {\n name?: string\n template?: string\n}\n\nconst init = async (options: InitOptions, prompt = ui.prompt): Promise<Required<InitOptions>> => {\n const questions: ui.Question[] = []\n if (!options.name) {\n questions.push({\n type: 'input',\n name: 'name',\n message: 'Name your new Hydrogen storefront',\n default: 'hydrogen-app',\n })\n }\n\n let explicitTemplate = options.template\n\n if (explicitTemplate) {\n const hydrogenTemplate = toHydrogenTemplateName(explicitTemplate)\n\n if (hydrogenTemplate) {\n const url = toHydrogenTemplateUrl(hydrogenTemplate)\n explicitTemplate = url\n }\n\n const parsedTemplate = github.parseRepoUrl(explicitTemplate)\n const missingBranch = !parsedTemplate.ref\n const looksLikeHydrogenTemplate =\n parsedTemplate.name === 'hydrogen' &&\n parsedTemplate.user === 'Shopify' &&\n parsedTemplate.subDirectory.startsWith('templates/')\n\n explicitTemplate =\n looksLikeHydrogenTemplate && missingBranch ? `${parsedTemplate.full}#${BRANCH}` : parsedTemplate.full\n } else {\n questions.push({\n type: 'select',\n name: 'template',\n message: 'Choose a template',\n choices: Object.keys(TEMPLATE_DATA).map((value) => ({\n name: TEMPLATE_DATA[value as keyof typeof TEMPLATE_DATA].description,\n value,\n })),\n default: TEMPLATE_NAMES[0],\n result: toHydrogenTemplateUrl,\n })\n }\n\n const {template = explicitTemplate, ...promptOutput}: InitOptions = await prompt(questions)\n\n return {...options, ...promptOutput, template} as Required<InitOptions>\n}\n\nexport default init\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n\nimport {version as hydrogenVersion} from '../../package.json'\n\nimport {version as cliVersion} from '../../../cli-main/package.json'\nimport {\n string,\n path,\n error,\n file,\n output,\n os,\n ui,\n npm,\n dependency,\n environment,\n github,\n template,\n git,\n} from '@shopify/cli-kit'\n\nimport {Writable} from 'stream'\n\ninterface InitOptions {\n name: string\n template: string\n directory: string\n dependencyManager?: string\n shopifyCliVersion?: string\n cliHydrogenPackageVersion?: string\n hydrogenVersion?: string\n local: boolean\n}\n\nconst suggestHydrogenSupport = () => `\nHelp us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.\n - Chat with us on Discord: https://discord.com/invite/ppSbThrFaS\n - Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new\n`\n\nasync function init(options: InitOptions) {\n const user = (await os.username()) ?? ''\n const cliPackageVersion = options.shopifyCliVersion ?? cliVersion\n const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? hydrogenVersion\n const hydrogenPackageVersion = options.hydrogenVersion\n const dependencyManager = inferDependencyManager(options.dependencyManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n\n await ui.nonEmptyDirectoryPrompt(outputDirectory)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templateScaffoldDir = path.join(tmpDir, 'app')\n\n await file.mkdir(templateDownloadDir)\n await file.mkdir(templateScaffoldDir)\n\n let tasks: ConstructorParameters<typeof ui.Listr>[0] = []\n\n const templateInfo = await github.parseRepoUrl(options.template)\n const branch = templateInfo.ref ? `#${templateInfo.ref}` : ''\n const templatePath = templateInfo.subDirectory\n ? path.join(templateDownloadDir, templateInfo.subDirectory)\n : templateDownloadDir\n\n tasks = tasks.concat([\n {\n title: 'Downloading template',\n\n task: async (_, task) => {\n const url = `${templateInfo.http}${branch}`\n await git.downloadRepository({\n repoUrl: url,\n destination: templateDownloadDir,\n shallow: true,\n progressUpdater: (statusString: string) => {\n const taskOutput = `Cloning template from ${url}:\\n${statusString}`\n task.output = taskOutput\n },\n })\n\n if (!(await file.exists(path.join(templatePath, 'package.json')))) {\n throw new error.Abort(`The template ${templatePath} was not found.`, suggestHydrogenSupport())\n }\n task.title = 'Template downloaded'\n },\n },\n\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n return parentTask.newListr(\n [\n {\n title: 'Parsing template files',\n task: async (_, task) => {\n const templateData = {\n name: hyphenizedName,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n shopify_cli_version: cliPackageVersion,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n hydrogen_version: hydrogenPackageVersion,\n author: user,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dependency_manager: options.dependencyManager,\n }\n await template.recursiveDirectoryCopy(templatePath, templateScaffoldDir, templateData)\n\n task.title = 'Template files parsed'\n },\n },\n {\n title: 'Updating package.json',\n task: async (_, task) => {\n const packageJSON = await npm.readPackageJSON(templateScaffoldDir)\n\n await npm.updateAppData(packageJSON, hyphenizedName)\n await updateCLIDependencies(packageJSON, options.local, {\n dependencies: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/hydrogen': hydrogenPackageVersion,\n },\n devDependencies: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/cli-hydrogen': cliHydrogenPackageVersion,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/cli': cliPackageVersion,\n },\n })\n await updateCLIScripts(packageJSON)\n await npm.writePackageJSON(templateScaffoldDir, packageJSON)\n\n task.title = 'Package.json updated'\n parentTask.title = 'App initialized'\n },\n },\n ],\n {concurrent: false},\n )\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configuring the project's NPM registry\",\n task: async (_, task) => {\n const npmrcPath = path.join(templateScaffoldDir, '.npmrc')\n const npmrcContent = `@shopify:registry=https://registry.npmjs.org`\n await file.write(npmrcPath, npmrcContent)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Installing dependencies with ${dependencyManager}`,\n task: async (_, task) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await installDependencies(templateScaffoldDir, dependencyManager, stdout)\n },\n },\n {\n title: 'Cleaning up',\n task: async (_, task) => {\n await cleanup(templateScaffoldDir)\n\n task.title = 'Completed clean up'\n },\n },\n ])\n\n const list = new ui.Listr(tasks, {\n concurrent: false,\n rendererOptions: {collapse: false},\n rendererSilent: environment.local.isUnitTest(),\n })\n\n await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n✨ ${hyphenizedName} is ready to build!\n🚀 Run ${output.token.packagejsonScript(\n dependencyManager,\n 'dev',\n )} to start your local development server and start building.\n\n📚 Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/custom-storefronts/hydrogen')}`)\n\n output.info(output.content`\n👋 Note: your project will display inventory from the Hydrogen Demo Store.\\\n To connect this project to your Shopify store’s inventory instead,\\\n update ${output.token.yellow(`${hyphenizedName}/hydrogen.config.js`)} with your\\\n store ID and Storefront API key.\\n`)\n}\n\nfunction inferDependencyManager(optionsDependencyManager: string | undefined): dependency.DependencyManager {\n if (\n optionsDependencyManager &&\n dependency.dependencyManager.includes(optionsDependencyManager as dependency.DependencyManager)\n ) {\n return optionsDependencyManager as dependency.DependencyManager\n }\n return dependency.dependencyManagerUsedForCreating()\n}\n\nexport default init\n\ninterface PackageDependencies {\n devDependencies: {[key: string]: string | undefined}\n dependencies: {[key: string]: string | undefined}\n}\n\nasync function updateCLIScripts(packageJSON: npm.PackageJSON): Promise<npm.PackageJSON> {\n packageJSON.scripts.dev = `shopify hydrogen dev`\n\n return packageJSON\n}\n\nasync function updateCLIDependencies(\n packageJSON: npm.PackageJSON,\n local: boolean,\n packageDependencies: PackageDependencies,\n): Promise<npm.PackageJSON> {\n const {devDependencies, dependencies} = packageDependencies\n\n packageJSON.devDependencies = packageJSON.devDependencies || {}\n packageJSON.dependencies = packageJSON.dependencies || {}\n\n Object.keys(devDependencies).forEach((key) => {\n packageJSON.devDependencies[key] = devDependencies[key] || packageJSON.devDependencies[key]\n })\n\n Object.keys(dependencies).forEach((key) => {\n packageJSON.dependencies[key] = dependencies[key] || packageJSON.dependencies[key]\n })\n\n if (local) {\n const devDependencyOverrides = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/cli': `file:${(await path.findUp('packages/cli-main', {type: 'directory'})) as string}`,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/cli-hydrogen': `file:${(await path.findUp('packages/cli-hydrogen', {type: 'directory'})) as string}`,\n }\n\n packageJSON.overrides = packageJSON.overrides\n ? {...packageJSON.overrides, ...devDependencyOverrides}\n : devDependencyOverrides\n\n packageJSON.resolutions = packageJSON.resolutions\n ? {...packageJSON.resolutions, ...devDependencyOverrides}\n : devDependencyOverrides\n }\n\n return packageJSON\n}\n\nasync function installDependencies(\n directory: string,\n dependencyManager: dependency.DependencyManager,\n stdout: Writable,\n): Promise<void> {\n await dependency.install(directory, dependencyManager, stdout)\n}\n\nasync function cleanup(webOutputDirectory: string) {\n const gitPaths = await path.glob(\n [\n path.join(webOutputDirectory, '**', '.git'),\n path.join(webOutputDirectory, '**', '.github'),\n path.join(webOutputDirectory, '**', '.gitmodules'),\n path.join(webOutputDirectory, '.stackblitzrc'),\n ],\n {\n dot: true,\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n return Promise.all(gitPaths.map((path) => file.rmdir(path, {force: true}))).then(() => {})\n}\n","import initPrompt from '../prompts/init'\nimport initService from '../services/init'\nimport {path, cli, analytics} from '@shopify/cli-kit'\nimport {Command, Flags} from '@oclif/core'\n\nexport default class Init extends Command {\n static flags = {\n ...cli.globalFlags,\n name: Flags.string({\n char: 'n',\n env: 'SHOPIFY_FLAG_NAME',\n hidden: false,\n }),\n template: Flags.string({\n char: 't',\n env: 'SHOPIFY_FLAG_TEMPLATE',\n hidden: false,\n }),\n path: Flags.string({\n char: 'p',\n env: 'SHOPIFY_FLAG_PATH',\n parse: (input, _) => Promise.resolve(path.resolve(input)),\n hidden: false,\n }),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'dependency-manager': Flags.string({\n char: 'd',\n env: 'SHOPIFY_FLAG_DEPENDENCY_MANAGER',\n hidden: false,\n options: ['npm', 'yarn', 'pnpm'],\n }),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'shopify-cli-version': Flags.string({\n char: 's',\n env: 'SHOPIFY_FLAG_SHOPIFY_CLI_VERSION',\n hidden: false,\n }),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'hydrogen-version': Flags.string({\n char: 'h',\n env: 'SHOPIFY_FLAG_HYDROGEN_VERSION',\n hidden: false,\n }),\n local: Flags.boolean({\n char: 'l',\n env: 'SHOPIFY_FLAG_LOCAL',\n default: false,\n hidden: true,\n }),\n }\n\n async run(): Promise<void> {\n const {flags} = await this.parse(Init)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n const promptAnswers = await initPrompt({\n name: flags.name,\n template: flags.template,\n })\n await initService({\n name: promptAnswers.name,\n template: promptAnswers.template,\n dependencyManager: flags['dependency-manager'],\n shopifyCliVersion: flags['shopify-cli-version'],\n hydrogenVersion: flags['hydrogen-version'],\n directory,\n local: flags.local,\n })\n await this.reportEvent()\n }\n\n async reportEvent(): Promise<void> {\n const commandIndex = process.argv.indexOf('init')\n const args = process.argv.slice(commandIndex + 1)\n await analytics.reportEvent('create-app', args)\n }\n}\n"],"names":["init","cliVersion","hydrogenVersion","initPrompt","initService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["import initPrompt from '../prompts/init.js'\nimport initService from '../services/init.js'\nimport {path, cli, analytics} from '@shopify/cli-kit'\nimport {Command, Flags} from '@oclif/core'\n\nexport default class Init extends Command {\n static flags = {\n ...cli.globalFlags,\n name: Flags.string({\n char: 'n',\n env: 'SHOPIFY_FLAG_NAME',\n hidden: false,\n }),\n template: Flags.string({\n char: 't',\n env: 'SHOPIFY_FLAG_TEMPLATE',\n hidden: false,\n }),\n path: Flags.string({\n char: 'p',\n env: 'SHOPIFY_FLAG_PATH',\n parse: (input, _) => Promise.resolve(path.resolve(input)),\n hidden: false,\n }),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'dependency-manager': Flags.string({\n char: 'd',\n env: 'SHOPIFY_FLAG_DEPENDENCY_MANAGER',\n hidden: false,\n options: ['npm', 'yarn', 'pnpm'],\n }),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'shopify-cli-version': Flags.string({\n char: 's',\n env: 'SHOPIFY_FLAG_SHOPIFY_CLI_VERSION',\n hidden: false,\n }),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'hydrogen-version': Flags.string({\n char: 'h',\n env: 'SHOPIFY_FLAG_HYDROGEN_VERSION',\n hidden: false,\n }),\n local: Flags.boolean({\n char: 'l',\n env: 'SHOPIFY_FLAG_LOCAL',\n default: false,\n hidden: true,\n }),\n }\n\n async run(): Promise<void> {\n this.startEvent()\n const {flags} = await this.parse(Init)\n const directory = flags.path ? path.resolve(flags.path) : process.cwd()\n const promptAnswers = await initPrompt({\n name: flags.name,\n template: flags.template,\n })\n await initService({\n name: promptAnswers.name,\n template: promptAnswers.template,\n dependencyManager: flags['dependency-manager'],\n shopifyCliVersion: flags['shopify-cli-version'],\n hydrogenVersion: flags['hydrogen-version'],\n directory,\n local: flags.local,\n })\n await analytics.reportEvent()\n }\n\n async startEvent(): Promise<void> {\n const commandIndex = process.argv.indexOf('init')\n const args = process.argv.slice(commandIndex + 1).join(' ')\n analytics.start({command: 'create-hydrogen', args})\n }\n}\n"]}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
CHANGED
|
@@ -1,26 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const initIndex = process.argv.findIndex((arg) => arg.includes("init"));
|
|
7
|
-
if (initIndex === -1) {
|
|
8
|
-
const initIndex2 = process.argv.findIndex((arg) => arg.match(/bin(\/|\\)(create-hydrogen|dev|run)/)) + 1;
|
|
9
|
-
process.argv.splice(initIndex2, 0, "init");
|
|
10
|
-
}
|
|
11
|
-
if (environment.local.isDebug()) {
|
|
12
|
-
settings.debug = true;
|
|
13
|
-
}
|
|
14
|
-
run(void 0, import.meta.url).then(flush).catch((error$1) => {
|
|
15
|
-
const kitMapper = error.mapper;
|
|
16
|
-
const kitHandle = error.handler;
|
|
17
|
-
return kitMapper(error$1).then((error2) => {
|
|
18
|
-
return kitHandle(error2);
|
|
19
|
-
}).then(() => {
|
|
20
|
-
process.exit(1);
|
|
1
|
+
import { runCreateCLI } from '@shopify/cli-kit/node/cli';
|
|
2
|
+
async function runCreateHydrogenCLI() {
|
|
3
|
+
await runCreateCLI({
|
|
4
|
+
moduleURL: import.meta.url,
|
|
5
|
+
logFilename: 'shopify.create-hydrogen.log',
|
|
21
6
|
});
|
|
22
|
-
});
|
|
23
7
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=index.js.map
|
|
8
|
+
export default runCreateHydrogenCLI;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAA;AAEtD,KAAK,UAAU,oBAAoB;IACjC,MAAM,YAAY,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;QAC1B,WAAW,EAAE,6BAA6B;KAC3C,CAAC,CAAA;AACJ,CAAC;AAED,eAAe,oBAAoB,CAAA","sourcesContent":["import {runCreateCLI} from '@shopify/cli-kit/node/cli'\n\nasync function runCreateHydrogenCLI() {\n await runCreateCLI({\n moduleURL: import.meta.url,\n logFilename: 'shopify.create-hydrogen.log',\n })\n}\n\nexport default runCreateHydrogenCLI\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ui } from '@shopify/cli-kit';
|
|
2
|
+
interface InitOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
template?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const init: (options: InitOptions, prompt?: <TName extends string & keyof TAnswers, TAnswers extends { [key in TName]: string; } = { [key_1 in TName]: string; }>(questions: readonly ui.Question<TName>[], debugForceInquirer?: boolean | undefined) => Promise<TAnswers>) => Promise<Required<InitOptions>>;
|
|
7
|
+
export default init;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ui, github, string } from '@shopify/cli-kit';
|
|
2
|
+
const TEMPLATE_BASE = 'https://github.com/Shopify/hydrogen/templates/';
|
|
3
|
+
const BRANCH = `dist`;
|
|
4
|
+
const TEMPLATE_DATA = {
|
|
5
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
6
|
+
'demo-store-js': {
|
|
7
|
+
description: 'Demo Store',
|
|
8
|
+
},
|
|
9
|
+
'demo-store-ts': {
|
|
10
|
+
description: 'Demo Store (TypeScript)',
|
|
11
|
+
},
|
|
12
|
+
'hello-world-js': {
|
|
13
|
+
description: 'Hello World',
|
|
14
|
+
},
|
|
15
|
+
'hello-world-ts': {
|
|
16
|
+
description: 'Hello World (TypeScript)',
|
|
17
|
+
},
|
|
18
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
19
|
+
};
|
|
20
|
+
const TEMPLATE_NAMES = Object.keys(TEMPLATE_DATA);
|
|
21
|
+
function toHydrogenTemplateName(key) {
|
|
22
|
+
const normalized = string.hyphenize(key).toLocaleLowerCase();
|
|
23
|
+
const withExtension = normalized.endsWith('-ts') || normalized.endsWith('-js') ? normalized : `${normalized}-js`;
|
|
24
|
+
return TEMPLATE_NAMES.includes(withExtension) ? withExtension : false;
|
|
25
|
+
}
|
|
26
|
+
function toHydrogenTemplateUrl(key) {
|
|
27
|
+
return `${TEMPLATE_BASE}${key}#${BRANCH}`;
|
|
28
|
+
}
|
|
29
|
+
const init = async (options, prompt = ui.prompt) => {
|
|
30
|
+
const questions = [];
|
|
31
|
+
if (!options.name) {
|
|
32
|
+
questions.push({
|
|
33
|
+
type: 'input',
|
|
34
|
+
name: 'name',
|
|
35
|
+
message: 'Name your new Hydrogen storefront',
|
|
36
|
+
default: 'hydrogen-app',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
let explicitTemplate = options.template;
|
|
40
|
+
if (explicitTemplate) {
|
|
41
|
+
const hydrogenTemplate = toHydrogenTemplateName(explicitTemplate);
|
|
42
|
+
if (hydrogenTemplate) {
|
|
43
|
+
const url = toHydrogenTemplateUrl(hydrogenTemplate);
|
|
44
|
+
explicitTemplate = url;
|
|
45
|
+
}
|
|
46
|
+
const parsedTemplate = github.parseRepoUrl(explicitTemplate);
|
|
47
|
+
const missingBranch = !parsedTemplate.ref;
|
|
48
|
+
const looksLikeHydrogenTemplate = parsedTemplate.name === 'hydrogen' &&
|
|
49
|
+
parsedTemplate.user === 'Shopify' &&
|
|
50
|
+
parsedTemplate.subDirectory.startsWith('templates/');
|
|
51
|
+
explicitTemplate =
|
|
52
|
+
looksLikeHydrogenTemplate && missingBranch ? `${parsedTemplate.full}#${BRANCH}` : parsedTemplate.full;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
questions.push({
|
|
56
|
+
type: 'select',
|
|
57
|
+
name: 'template',
|
|
58
|
+
message: 'Choose a template',
|
|
59
|
+
choices: Object.keys(TEMPLATE_DATA).map((value) => ({
|
|
60
|
+
name: TEMPLATE_DATA[value].description,
|
|
61
|
+
value,
|
|
62
|
+
})),
|
|
63
|
+
default: TEMPLATE_NAMES[0],
|
|
64
|
+
result: toHydrogenTemplateUrl,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const { template = explicitTemplate, ...promptOutput } = await prompt(questions);
|
|
68
|
+
return { ...options, ...promptOutput, template };
|
|
69
|
+
};
|
|
70
|
+
export default init;
|
|
71
|
+
//# sourceMappingURL=init.js.map
|