@shopify/create-app 1.0.9 → 2.0.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/CHANGELOG.md +26 -0
- package/dist/commands/init.js +111 -176
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -7
- package/templates/app/.gitignore +0 -184
- package/templates/app/README.md.liquid +0 -7
- package/templates/app/package.json.liquid +0 -28
- package/templates/app/shopify.app.toml.liquid +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @shopify/create-app
|
|
2
2
|
|
|
3
|
+
## 2.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c6a9450b: Add support to scaffold function extensions
|
|
8
|
+
- Updated dependencies [c6a9450b]
|
|
9
|
+
- Updated dependencies [70d8d50d]
|
|
10
|
+
- @shopify/cli-kit@2.0.2
|
|
11
|
+
|
|
12
|
+
## 2.0.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [9cb99f12]
|
|
17
|
+
- Updated dependencies [882e54e6]
|
|
18
|
+
- @shopify/cli-kit@2.0.1
|
|
19
|
+
|
|
20
|
+
## 1.1.1
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [488c06a]
|
|
25
|
+
- Updated dependencies [f156c37]
|
|
26
|
+
- Updated dependencies [5763a76]
|
|
27
|
+
- @shopify/cli-kit@1.1.1
|
|
28
|
+
|
|
3
29
|
## 1.0.9
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/dist/commands/init.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import { ui,
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
1
|
+
import { ui, constants, path, dependency, file, string, git, template, npm, output, cli } from '@shopify/cli-kit';
|
|
3
2
|
import { Writable } from 'stream';
|
|
4
3
|
import { Flags, Command } from '@oclif/core';
|
|
5
4
|
|
|
6
5
|
const init$1 = async (options, prompt = ui.prompt) => {
|
|
6
|
+
const templateURLMap = {
|
|
7
|
+
node: "https://github.com/Shopify/starter-node-app"
|
|
8
|
+
};
|
|
9
|
+
const defaults = {
|
|
10
|
+
name: "app",
|
|
11
|
+
template: templateURLMap.node
|
|
12
|
+
};
|
|
7
13
|
const questions = [];
|
|
8
14
|
if (!options.name) {
|
|
9
15
|
questions.push({
|
|
10
16
|
type: "input",
|
|
11
17
|
name: "name",
|
|
12
18
|
message: "Your app's working name?",
|
|
13
|
-
default:
|
|
19
|
+
default: defaults.name,
|
|
14
20
|
validate: (value) => {
|
|
15
21
|
if (value.length === 0) {
|
|
16
22
|
return "App Name cannot be empty";
|
|
@@ -22,220 +28,160 @@ const init$1 = async (options, prompt = ui.prompt) => {
|
|
|
22
28
|
}
|
|
23
29
|
});
|
|
24
30
|
}
|
|
25
|
-
if (!options.template) {
|
|
31
|
+
if (!options.template && Object.keys(templateURLMap).length > 1) {
|
|
26
32
|
questions.push({
|
|
27
33
|
type: "select",
|
|
28
34
|
name: "template",
|
|
29
|
-
choices:
|
|
35
|
+
choices: Object.keys(templateURLMap),
|
|
30
36
|
message: "Which template would you like to use?",
|
|
31
|
-
default:
|
|
37
|
+
default: defaults.template
|
|
32
38
|
});
|
|
33
39
|
}
|
|
34
40
|
const promptOutput = await prompt(questions);
|
|
35
|
-
|
|
41
|
+
const answers = {
|
|
42
|
+
...options,
|
|
43
|
+
...promptOutput
|
|
44
|
+
};
|
|
45
|
+
const templateURL = templateURLMap[answers.template];
|
|
46
|
+
answers.template = templateURL || answers.template || defaults.template;
|
|
47
|
+
return answers;
|
|
36
48
|
};
|
|
37
49
|
|
|
38
|
-
async function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
async function updateCLIDependencies(packageJSON, local) {
|
|
51
|
+
packageJSON.dependencies = packageJSON.dependencies || {};
|
|
52
|
+
packageJSON.dependencies["@shopify/cli"] = constants.versions.cli;
|
|
53
|
+
packageJSON.dependencies["@shopify/app"] = constants.versions.app;
|
|
54
|
+
if (local) {
|
|
55
|
+
const cliPath = `file:${await path.findUp("packages/cli", { type: "directory" })}`;
|
|
56
|
+
const appPath = `file:${await path.findUp("packages/app", { type: "directory" })}`;
|
|
57
|
+
const cliKitPath = `file:${await path.findUp("packages/cli-kit", { type: "directory" })}`;
|
|
58
|
+
packageJSON.dependencies["@shopify/cli"] = cliPath;
|
|
59
|
+
packageJSON.dependencies["@shopify/app"] = appPath;
|
|
60
|
+
const dependencyOverrides = {
|
|
61
|
+
"@shopify/cli": cliPath,
|
|
62
|
+
"@shopify/app": appPath,
|
|
63
|
+
"@shopify/cli-kit": cliKitPath
|
|
64
|
+
};
|
|
65
|
+
packageJSON.overrides = packageJSON.overrides ? { ...packageJSON.overrides, ...dependencyOverrides } : dependencyOverrides;
|
|
66
|
+
packageJSON.resolutions = packageJSON.resolutions ? { ...packageJSON.resolutions, ...dependencyOverrides } : dependencyOverrides;
|
|
47
67
|
}
|
|
68
|
+
return packageJSON;
|
|
48
69
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
async function getDeepInstallNPMTasks({
|
|
71
|
+
from,
|
|
72
|
+
dependencyManager,
|
|
73
|
+
didInstallEverything
|
|
74
|
+
}) {
|
|
75
|
+
const packageJSONFiles = await path.glob([path.join(from, "**/package.json")]);
|
|
76
|
+
let foldersInstalled = 0;
|
|
77
|
+
return packageJSONFiles.map((filePath) => {
|
|
78
|
+
const folderPath = filePath.replace("package.json", "");
|
|
79
|
+
const titlePath = folderPath.replace(from, "");
|
|
80
|
+
return {
|
|
81
|
+
title: `Installing dependencies in ${titlePath}`,
|
|
82
|
+
task: async (_, task) => {
|
|
83
|
+
const output = new Writable({
|
|
84
|
+
write(chunk, _2, next) {
|
|
85
|
+
task.output = chunk.toString();
|
|
86
|
+
next();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
await dependency.install(folderPath, dependencyManager, output, output);
|
|
90
|
+
task.title = `Installed dependencies in ${titlePath}`;
|
|
91
|
+
foldersInstalled++;
|
|
92
|
+
if (foldersInstalled === packageJSONFiles.length) {
|
|
93
|
+
didInstallEverything();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
65
97
|
});
|
|
66
98
|
}
|
|
67
99
|
|
|
68
|
-
|
|
69
|
-
home: "shopify.home.toml",
|
|
70
|
-
homeTemplate: "shopify.home.template.toml"
|
|
71
|
-
};
|
|
72
|
-
const blocks = {
|
|
73
|
-
home: {
|
|
74
|
-
directoryName: "home",
|
|
75
|
-
configurationName: configurationFileNames.home
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
async function cleanup(homeOutputDirectory) {
|
|
100
|
+
async function cleanup(webOutputDirectory) {
|
|
80
101
|
const gitPaths = await path.glob([
|
|
81
|
-
path.join(
|
|
82
|
-
path.join(
|
|
83
|
-
path.join(
|
|
102
|
+
path.join(webOutputDirectory, "**", ".git"),
|
|
103
|
+
path.join(webOutputDirectory, "**", ".github"),
|
|
104
|
+
path.join(webOutputDirectory, "**", ".gitmodules"),
|
|
105
|
+
path.join(webOutputDirectory, "LICENSE*")
|
|
84
106
|
], {
|
|
85
107
|
dot: true,
|
|
86
108
|
onlyFiles: false,
|
|
87
109
|
onlyDirectories: false,
|
|
88
110
|
ignore: ["**/node_modules/**"]
|
|
89
111
|
});
|
|
90
|
-
|
|
91
|
-
path.join(homeOutputDirectory, "**", "_template"),
|
|
92
|
-
path.join(homeOutputDirectory, "**", configurationFileNames.homeTemplate)
|
|
93
|
-
], {
|
|
94
|
-
onlyFiles: false,
|
|
95
|
-
onlyDirectories: false,
|
|
96
|
-
ignore: ["**/node_modules/**"]
|
|
97
|
-
});
|
|
98
|
-
const pathsToDelete = [...gitPaths, ...templatePaths];
|
|
99
|
-
return Promise.all(pathsToDelete.map((path2) => file.rmdir(path2, { force: true }))).then(() => {
|
|
112
|
+
return Promise.all(gitPaths.map((path2) => file.rmdir(path2, { force: true }))).then(() => {
|
|
100
113
|
});
|
|
101
114
|
}
|
|
102
115
|
|
|
103
116
|
async function init(options) {
|
|
104
|
-
const user = await os.username() ?? "";
|
|
105
|
-
const templatePath = await template("app");
|
|
106
|
-
let cliPackageVersion = constants.versions.cli;
|
|
107
|
-
let appPackageVersion = constants.versions.app;
|
|
108
|
-
const dependencyOverrides = {};
|
|
109
|
-
if (options.local) {
|
|
110
|
-
cliPackageVersion = `file:${await path.findUp("packages/cli", { type: "directory" })}`;
|
|
111
|
-
appPackageVersion = `file:${await path.findUp("packages/app", { type: "directory" })}`;
|
|
112
|
-
dependencyOverrides["@shopify/cli"] = cliPackageVersion;
|
|
113
|
-
dependencyOverrides["@shopify/app"] = appPackageVersion;
|
|
114
|
-
dependencyOverrides["@shopify/cli-kit"] = `file:${await path.findUp("packages/cli-kit", { type: "directory" })}`;
|
|
115
|
-
}
|
|
116
117
|
const dependencyManager = inferDependencyManager(options.dependencyManager);
|
|
117
118
|
const hyphenizedName = string.hyphenize(options.name);
|
|
118
119
|
const outputDirectory = path.join(options.directory, hyphenizedName);
|
|
119
120
|
await file.inTemporaryDirectory(async (tmpDir) => {
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
await file.mkdir(tmpDirHome);
|
|
124
|
-
await file.mkdir(tmpDirDownload);
|
|
121
|
+
const templateDownloadDir = path.join(tmpDir, "download");
|
|
122
|
+
const templateScaffoldDir = path.join(tmpDir, "app");
|
|
123
|
+
await file.mkdir(templateDownloadDir);
|
|
125
124
|
const list = new ui.Listr([
|
|
126
125
|
{
|
|
127
126
|
title: "Downloading template",
|
|
128
127
|
task: async (_, task) => {
|
|
129
|
-
await
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
await git.downloadRepository({
|
|
129
|
+
repoUrl: options.template,
|
|
130
|
+
destination: templateDownloadDir
|
|
132
131
|
});
|
|
132
|
+
task.title = "Template downloaded";
|
|
133
133
|
}
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
title: `Initializing your app ${hyphenizedName}`,
|
|
137
|
-
task: async (_,
|
|
138
|
-
|
|
139
|
-
...options,
|
|
140
|
-
directory: tmpDirApp,
|
|
141
|
-
templatePath,
|
|
142
|
-
cliPackageVersion,
|
|
143
|
-
appPackageVersion,
|
|
144
|
-
user,
|
|
145
|
-
dependencyManager,
|
|
146
|
-
dependencyOverrides
|
|
147
|
-
});
|
|
148
|
-
task.title = "App initialized";
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
title: `Creating home`,
|
|
153
|
-
task: async (_, task) => {
|
|
154
|
-
const hooksPreFilePaths = await path.glob(path.join(tmpDirDownload, "hooks/pre/*"));
|
|
155
|
-
const hooksPostFilePaths = await path.glob(path.join(tmpDirDownload, "hooks/post/*"));
|
|
156
|
-
return task.newListr([
|
|
137
|
+
task: async (_, parentTask) => {
|
|
138
|
+
return parentTask.newListr([
|
|
157
139
|
{
|
|
158
|
-
title: "
|
|
159
|
-
task: async () => {
|
|
160
|
-
await
|
|
161
|
-
|
|
162
|
-
prompts: {},
|
|
163
|
-
directory: tmpDirHome,
|
|
164
|
-
templatePath: tmpDirDownload,
|
|
165
|
-
cliPackageVersion,
|
|
166
|
-
appPackageVersion,
|
|
167
|
-
user,
|
|
168
|
-
dependencyManager,
|
|
169
|
-
dependencyOverrides
|
|
140
|
+
title: "Parsing liquid",
|
|
141
|
+
task: async (_2, task) => {
|
|
142
|
+
await template.recursiveDirectoryCopy(templateDownloadDir, templateScaffoldDir, {
|
|
143
|
+
dependency_manager: dependencyManager
|
|
170
144
|
});
|
|
145
|
+
task.title = "Liquid parsed";
|
|
171
146
|
}
|
|
172
147
|
},
|
|
173
|
-
...hooksPreFilePaths.map((sourcePath) => {
|
|
174
|
-
const hookPath = path.join(tmpDirHome, path.relative(tmpDirDownload, sourcePath)).replace(".liquid", "");
|
|
175
|
-
return {
|
|
176
|
-
title: path.basename(hookPath),
|
|
177
|
-
task: async (_2, task2) => {
|
|
178
|
-
const stdout = new Writable({
|
|
179
|
-
write(chunk, encoding, next) {
|
|
180
|
-
task2.output = chunk.toString();
|
|
181
|
-
next();
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
const stderr = new Writable({
|
|
185
|
-
write(chunk, encoding, next) {
|
|
186
|
-
task2.output = chunk.toString();
|
|
187
|
-
next();
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
await system.exec(hookPath, [], { cwd: tmpDirHome, stdout, stderr });
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
}),
|
|
194
|
-
...hooksPostFilePaths.map((sourcePath) => {
|
|
195
|
-
const hookPath = path.join(tmpDirHome, path.relative(tmpDirDownload, sourcePath)).replace(".liquid", "");
|
|
196
|
-
return {
|
|
197
|
-
title: path.basename(hookPath),
|
|
198
|
-
task: async (_2, task2) => {
|
|
199
|
-
const stdout = new Writable({
|
|
200
|
-
write(chunk, encoding, next) {
|
|
201
|
-
task2.output = chunk.toString();
|
|
202
|
-
next();
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
const stderr = new Writable({
|
|
206
|
-
write(chunk, encoding, next) {
|
|
207
|
-
task2.output = chunk.toString();
|
|
208
|
-
next();
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
await system.exec(hookPath, [], { cwd: tmpDirHome, stdout, stderr });
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
}),
|
|
215
148
|
{
|
|
216
|
-
title: "
|
|
217
|
-
task: async () => {
|
|
218
|
-
await
|
|
149
|
+
title: "Updating package.json",
|
|
150
|
+
task: async (_2, task) => {
|
|
151
|
+
const packageJSON = await npm.readPackageJSON(templateScaffoldDir);
|
|
152
|
+
await npm.updateAppData(packageJSON, hyphenizedName);
|
|
153
|
+
await updateCLIDependencies(packageJSON, options.local);
|
|
154
|
+
await npm.writePackageJSON(templateScaffoldDir, packageJSON);
|
|
155
|
+
task.title = "Package.json updated";
|
|
156
|
+
parentTask.title = "App initialized";
|
|
219
157
|
}
|
|
220
158
|
}
|
|
221
159
|
]);
|
|
222
160
|
}
|
|
223
161
|
},
|
|
224
162
|
{
|
|
225
|
-
title: `Installing
|
|
163
|
+
title: `Installing dependencies with ${dependencyManager}`,
|
|
164
|
+
task: async (_, parentTask) => {
|
|
165
|
+
function didInstallEverything() {
|
|
166
|
+
parentTask.title = `Dependencies installed with ${dependencyManager}`;
|
|
167
|
+
}
|
|
168
|
+
return parentTask.newListr(await getDeepInstallNPMTasks({
|
|
169
|
+
from: templateScaffoldDir,
|
|
170
|
+
dependencyManager,
|
|
171
|
+
didInstallEverything
|
|
172
|
+
}), { concurrent: false });
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
title: "Cleaning up",
|
|
226
177
|
task: async (_, task) => {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
task.output = chunk.toString();
|
|
230
|
-
next();
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
await dependency.install(tmpDirApp, dependencyManager, output2, output2);
|
|
178
|
+
await cleanup(templateScaffoldDir);
|
|
179
|
+
task.title = "Completed clean up";
|
|
234
180
|
}
|
|
235
181
|
}
|
|
236
182
|
], { concurrent: false });
|
|
237
183
|
await list.run();
|
|
238
|
-
await file.move(
|
|
184
|
+
await file.move(templateScaffoldDir, outputDirectory);
|
|
239
185
|
});
|
|
240
186
|
output.info(output.content`
|
|
241
187
|
${hyphenizedName} is ready to build! ✨
|
|
@@ -249,18 +195,6 @@ function inferDependencyManager(optionsDependencyManager) {
|
|
|
249
195
|
}
|
|
250
196
|
return dependency.dependencyManagerUsedForCreating();
|
|
251
197
|
}
|
|
252
|
-
async function scaffoldTemplate(options) {
|
|
253
|
-
const templateData = {
|
|
254
|
-
name: options.name,
|
|
255
|
-
shopify_cli_version: options.cliPackageVersion,
|
|
256
|
-
shopify_app_version: options.appPackageVersion,
|
|
257
|
-
dependency_overrides: options.dependencyOverrides,
|
|
258
|
-
author: options.user,
|
|
259
|
-
dependency_manager: options.dependencyManager,
|
|
260
|
-
...options.prompts
|
|
261
|
-
};
|
|
262
|
-
await template$1.recursiveDirectoryCopy(options.templatePath, options.directory, templateData);
|
|
263
|
-
}
|
|
264
198
|
|
|
265
199
|
const _Init = class extends Command {
|
|
266
200
|
async run() {
|
|
@@ -281,6 +215,7 @@ const _Init = class extends Command {
|
|
|
281
215
|
};
|
|
282
216
|
let Init = _Init;
|
|
283
217
|
Init.flags = {
|
|
218
|
+
...cli.globalFlags,
|
|
284
219
|
name: Flags.string({
|
|
285
220
|
char: "n",
|
|
286
221
|
env: "SHOPIFY_FLAG_NAME",
|
|
@@ -293,7 +228,7 @@ Init.flags = {
|
|
|
293
228
|
hidden: false
|
|
294
229
|
}),
|
|
295
230
|
template: Flags.string({
|
|
296
|
-
description: "The
|
|
231
|
+
description: "The app template. Eg, --template https://github.com/Shopify/shopify-app-node",
|
|
297
232
|
env: "SHOPIFY_FLAG_TEMPLATE"
|
|
298
233
|
}),
|
|
299
234
|
"dependency-manager": Flags.string({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sources":["../../src/prompts/init.ts","../../src/utils/paths.ts","../../src/utils/home-template/download.ts","../../src/constants.ts","../../src/utils/home-template/cleanup.ts","../../src/services/init.ts","../../src/commands/init.ts"],"sourcesContent":["import {ui} from '@shopify/cli-kit'\n\ninterface InitOptions {\n name?: string\n template?: string\n}\n\ninterface InitOutput {\n name: string\n template: string\n}\n\nconst init = async (options: InitOptions, prompt = ui.prompt): Promise<InitOutput> => {\n const questions: ui.Question[] = []\n if (!options.name) {\n questions.push({\n type: 'input',\n name: 'name',\n message: \"Your app's working name?\",\n default: 'app',\n validate: (value) => {\n if (value.length === 0) {\n return 'App Name cannot be empty'\n }\n if (value.length > 30) {\n return 'App name is too long (maximum is 30 characters)'\n }\n return true\n },\n })\n }\n if (!options.template) {\n questions.push({\n type: 'select',\n name: 'template',\n choices: ['node', 'rails'],\n message: 'Which template would you like to use?',\n default: 'https://github.com/Shopify/shopify-app-node#cli-next',\n })\n }\n const promptOutput: InitOutput = await prompt(questions)\n return {...options, ...promptOutput, template: 'https://github.com/Shopify/shopify-app-node#cli-next'}\n}\n\nexport default init\n","import {path, error} from '@shopify/cli-kit'\nimport {fileURLToPath} from 'url'\n\nexport async function template(name: string): Promise<string> {\n const templatePath = await path.findUp(`templates/${name}`, {\n cwd: path.dirname(fileURLToPath(import.meta.url)),\n type: 'directory',\n })\n if (templatePath) {\n return templatePath\n } else {\n throw new error.Bug(`Couldn't find the template ${name} in @shopify/create-app.`)\n }\n}\n","import {git} from '@shopify/cli-kit'\n\nexport default async function downloadTemplate({templateUrl, into}: {templateUrl: string; into: string}) {\n const components = templateUrl.split('#')\n let branch: string | undefined\n const repository = components[0]\n if (components.length === 2) {\n branch = components[1]\n }\n const options: any = {'--recurse-submodules': null}\n if (branch) {\n options['--branch'] = branch\n }\n\n await git.factory().clone(repository, into, options, (err) => {\n if (err) {\n throw new Error(err.message)\n }\n })\n}\n","export const configurationFileNames = {\n home: 'shopify.home.toml',\n homeTemplate: 'shopify.home.template.toml',\n}\n\nexport const blocks = {\n home: {\n directoryName: 'home',\n configurationName: configurationFileNames.home,\n },\n}\n","import {configurationFileNames} from '../../constants'\nimport {file, path} from '@shopify/cli-kit'\n\nexport default async function cleanup(homeOutputDirectory: string) {\n const gitPaths = await path.glob(\n [\n path.join(homeOutputDirectory, '**', '.git'),\n path.join(homeOutputDirectory, '**', '.github'),\n path.join(homeOutputDirectory, '**', '.gitmodules'),\n ],\n {\n dot: true,\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n const templatePaths = await path.glob(\n [\n path.join(homeOutputDirectory, '**', '_template'),\n path.join(homeOutputDirectory, '**', configurationFileNames.homeTemplate),\n ],\n {\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n const pathsToDelete = [...gitPaths, ...templatePaths]\n\n return Promise.all(pathsToDelete.map((path) => file.rmdir(path, {force: true}))).then(() => {})\n}\n","import {template as getTemplatePath} from '../utils/paths'\nimport downloadTemplate from '../utils/home-template/download'\nimport cleanupHome from '../utils/home-template/cleanup'\nimport {blocks} from '../constants'\nimport {string, path, template, file, output, os, ui, dependency, constants, system} from '@shopify/cli-kit'\nimport {Writable} from 'stream'\n\ninterface InitOptions {\n name: string\n directory: string\n template: string\n dependencyManager: string | undefined\n local: boolean\n}\n\nasync function init(options: InitOptions) {\n const user = (await os.username()) ?? ''\n const templatePath = await getTemplatePath('app')\n\n let cliPackageVersion = constants.versions.cli\n let appPackageVersion = constants.versions.app\n const dependencyOverrides: {[key: string]: string} = {}\n\n if (options.local) {\n cliPackageVersion = `file:${(await path.findUp('packages/cli', {type: 'directory'})) as string}`\n appPackageVersion = `file:${(await path.findUp('packages/app', {type: 'directory'})) as string}`\n\n dependencyOverrides['@shopify/cli'] = cliPackageVersion\n dependencyOverrides['@shopify/app'] = appPackageVersion\n dependencyOverrides['@shopify/cli-kit'] = `file:${\n (await path.findUp('packages/cli-kit', {type: 'directory'})) as string\n }`\n }\n\n const dependencyManager = inferDependencyManager(options.dependencyManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const tmpDirApp = path.join(tmpDir, 'app')\n const tmpDirHome = path.join(tmpDirApp, blocks.home.directoryName)\n const tmpDirDownload = path.join(tmpDir, 'download')\n\n await file.mkdir(tmpDirHome)\n await file.mkdir(tmpDirDownload)\n\n const list = new ui.Listr(\n [\n {\n title: 'Downloading template',\n task: async (_, task) => {\n await downloadTemplate({\n templateUrl: options.template,\n into: tmpDirDownload,\n })\n },\n },\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, task) => {\n await scaffoldTemplate({\n ...options,\n directory: tmpDirApp,\n templatePath,\n cliPackageVersion,\n appPackageVersion,\n user,\n dependencyManager,\n dependencyOverrides,\n })\n task.title = 'App initialized'\n },\n },\n {\n title: `Creating home`,\n task: async (_, task) => {\n const hooksPreFilePaths = await path.glob(path.join(tmpDirDownload, 'hooks/pre/*'))\n const hooksPostFilePaths = await path.glob(path.join(tmpDirDownload, 'hooks/post/*'))\n\n return task.newListr([\n {\n title: 'Scaffolding home',\n task: async () => {\n await scaffoldTemplate({\n ...options,\n prompts: {},\n directory: tmpDirHome,\n templatePath: tmpDirDownload,\n cliPackageVersion,\n appPackageVersion,\n user,\n dependencyManager,\n dependencyOverrides,\n })\n },\n },\n ...hooksPreFilePaths.map((sourcePath) => {\n const hookPath = path.join(tmpDirHome, path.relative(tmpDirDownload, sourcePath)).replace('.liquid', '')\n return {\n title: path.basename(hookPath),\n task: async (_: any, task: any) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n const stderr = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await system.exec(hookPath, [], {cwd: tmpDirHome, stdout, stderr})\n },\n }\n }),\n ...hooksPostFilePaths.map((sourcePath) => {\n const hookPath = path.join(tmpDirHome, path.relative(tmpDirDownload, sourcePath)).replace('.liquid', '')\n return {\n title: path.basename(hookPath),\n task: async (_: any, task: any) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n const stderr = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await system.exec(hookPath, [], {cwd: tmpDirHome, stdout, stderr})\n },\n }\n }),\n {\n title: 'Cleaning up home',\n task: async () => {\n await cleanupHome(tmpDirHome)\n },\n },\n ])\n },\n },\n {\n title: `Installing app dependencies with ${dependencyManager}`,\n task: async (_, task) => {\n const output = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await dependency.install(tmpDirApp, dependencyManager, output, output)\n },\n },\n ],\n {concurrent: false},\n )\n await list.run()\n\n await file.move(tmpDirApp, outputDirectory)\n })\n\n output.info(output.content`\n ${hyphenizedName} is ready to build! ✨\n Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/apps/getting-started')}\n Inspiration ${output.token.command(`${dependencyManager} shopify help`)}\n `)\n}\n\nfunction inferDependencyManager(optionsDependencyManager: string | undefined): dependency.DependencyManager {\n if (optionsDependencyManager && dependency.dependencyManager.includes(optionsDependencyManager)) {\n return optionsDependencyManager as dependency.DependencyManager\n }\n return dependency.dependencyManagerUsedForCreating()\n}\n\nasync function scaffoldTemplate(\n options: InitOptions & {\n directory: string\n prompts?: {[key: string]: string | number | boolean}\n templatePath: string\n cliPackageVersion: string\n appPackageVersion: string\n dependencyOverrides: {[key: string]: string}\n user: string\n dependencyManager: string\n },\n): Promise<void> {\n const templateData = {\n name: options.name,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n shopify_cli_version: options.cliPackageVersion,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n shopify_app_version: options.appPackageVersion,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dependency_overrides: options.dependencyOverrides,\n author: options.user,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dependency_manager: options.dependencyManager,\n ...options.prompts,\n }\n await template.recursiveDirectoryCopy(options.templatePath, options.directory, templateData)\n}\n\nexport default init\n","import initPrompt from '../prompts/init'\nimport initService from '../services/init'\nimport {Command, Flags} from '@oclif/core'\nimport {path} from '@shopify/cli-kit'\n\nexport default class Init extends Command {\n static flags = {\n name: Flags.string({\n char: 'n',\n env: 'SHOPIFY_FLAG_NAME',\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 template: Flags.string({\n description: 'The template for app home. Eg, --template https://github.com/Shopify/shopify-app-node',\n env: 'SHOPIFY_FLAG_TEMPLATE',\n }),\n 'dependency-manager': Flags.string({\n char: 'd',\n env: 'SHOPIFY_FLAG_DEPENDENCY_MANAGER',\n hidden: false,\n options: ['npm', 'yarn', 'pnpm'],\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 dependencyManager: flags['dependency-manager'],\n template: promptAnswers.template,\n local: flags.local,\n directory,\n })\n }\n}\n"],"names":["init","getTemplatePath","cleanupHome","template","initPrompt","initService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sources":["../../src/prompts/init.ts","../../src/utils/template/npm.ts","../../src/utils/template/cleanup.ts","../../src/services/init.ts","../../src/commands/init.ts"],"sourcesContent":["import {ui} from '@shopify/cli-kit'\n\ninterface InitOptions {\n name?: string\n template?: string\n}\n\ninterface InitOutput {\n name: string\n template: string\n}\n\nconst init = async (options: InitOptions, prompt = ui.prompt): Promise<InitOutput> => {\n // Eventually this list should be taken from a remote location\n // That way we don't have to update the CLI every time we add a template\n const templateURLMap = {\n node: 'https://github.com/Shopify/starter-node-app',\n }\n\n const defaults = {\n name: 'app',\n template: templateURLMap.node,\n }\n\n const questions: ui.Question[] = []\n if (!options.name) {\n questions.push({\n type: 'input',\n name: 'name',\n message: \"Your app's working name?\",\n default: defaults.name,\n validate: (value) => {\n if (value.length === 0) {\n return 'App Name cannot be empty'\n }\n if (value.length > 30) {\n return 'App name is too long (maximum is 30 characters)'\n }\n return true\n },\n })\n }\n\n if (!options.template && Object.keys(templateURLMap).length > 1) {\n questions.push({\n type: 'select',\n name: 'template',\n choices: Object.keys(templateURLMap),\n message: 'Which template would you like to use?',\n default: defaults.template,\n })\n }\n\n const promptOutput: InitOutput = await prompt(questions)\n const answers = {\n ...options,\n ...promptOutput,\n }\n\n const templateURL = templateURLMap[answers.template as keyof typeof templateURLMap]\n answers.template = templateURL || answers.template || defaults.template\n\n return answers\n}\n\nexport default init\n","import {constants, path, dependency, ui, npm} from '@shopify/cli-kit'\nimport {Writable} from 'stream'\n\nexport async function updateCLIDependencies(packageJSON: npm.PackageJSON, local: boolean): Promise<npm.PackageJSON> {\n packageJSON.dependencies = packageJSON.dependencies || {}\n packageJSON.dependencies['@shopify/cli'] = constants.versions.cli\n packageJSON.dependencies['@shopify/app'] = constants.versions.app\n\n if (local) {\n const cliPath = `file:${(await path.findUp('packages/cli', {type: 'directory'})) as string}`\n const appPath = `file:${(await path.findUp('packages/app', {type: 'directory'})) as string}`\n const cliKitPath = `file:${(await path.findUp('packages/cli-kit', {type: 'directory'})) as string}`\n\n // eslint-disable-next-line require-atomic-updates\n packageJSON.dependencies['@shopify/cli'] = cliPath\n // eslint-disable-next-line require-atomic-updates\n packageJSON.dependencies['@shopify/app'] = appPath\n\n const dependencyOverrides = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/cli': cliPath,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/app': appPath,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '@shopify/cli-kit': cliKitPath,\n }\n\n packageJSON.overrides = packageJSON.overrides\n ? {...packageJSON.overrides, ...dependencyOverrides}\n : dependencyOverrides\n\n packageJSON.resolutions = packageJSON.resolutions\n ? {...packageJSON.resolutions, ...dependencyOverrides}\n : dependencyOverrides\n }\n\n return packageJSON\n}\n\nexport async function getDeepInstallNPMTasks({\n from,\n dependencyManager,\n didInstallEverything,\n}: {\n from: string\n dependencyManager: dependency.DependencyManager\n didInstallEverything(): void\n}): Promise<ui.ListrTask[]> {\n const packageJSONFiles = await path.glob([path.join(from, '**/package.json')])\n let foldersInstalled = 0\n\n return packageJSONFiles.map((filePath) => {\n const folderPath = filePath.replace('package.json', '')\n const titlePath = folderPath.replace(from, '')\n\n return {\n title: `Installing dependencies in ${titlePath}`,\n task: async (_, task) => {\n const output = new Writable({\n write(chunk, _, next) {\n task.output = chunk.toString()\n next()\n },\n })\n\n await dependency.install(folderPath, dependencyManager, output, output)\n\n task.title = `Installed dependencies in ${titlePath}`\n\n foldersInstalled++\n\n if (foldersInstalled === packageJSONFiles.length) {\n didInstallEverything()\n }\n },\n }\n })\n}\n","import {file, path} from '@shopify/cli-kit'\n\nexport default async 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, 'LICENSE*'),\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 {getDeepInstallNPMTasks, updateCLIDependencies} from '../utils/template/npm'\nimport cleanup from '../utils/template/cleanup'\n\nimport {string, path, file, output, ui, dependency, template, npm, git} from '@shopify/cli-kit'\n\ninterface InitOptions {\n name: string\n directory: string\n template: string\n dependencyManager: string | undefined\n local: boolean\n}\n\nasync function init(options: InitOptions) {\n const dependencyManager = inferDependencyManager(options.dependencyManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\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\n const list = new ui.Listr(\n [\n {\n title: 'Downloading template',\n task: async (_, task) => {\n await git.downloadRepository({\n repoUrl: options.template,\n destination: templateDownloadDir,\n })\n task.title = 'Template downloaded'\n },\n },\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n return parentTask.newListr([\n {\n title: 'Parsing liquid',\n task: async (_, task) => {\n await template.recursiveDirectoryCopy(templateDownloadDir, templateScaffoldDir, {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dependency_manager: dependencyManager,\n })\n\n task.title = 'Liquid 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\n await npm.writePackageJSON(templateScaffoldDir, packageJSON)\n\n task.title = 'Package.json updated'\n parentTask.title = 'App initialized'\n },\n },\n ])\n },\n },\n {\n title: `Installing dependencies with ${dependencyManager}`,\n task: async (_, parentTask) => {\n function didInstallEverything() {\n parentTask.title = `Dependencies installed with ${dependencyManager}`\n }\n\n return parentTask.newListr(\n await getDeepInstallNPMTasks({\n from: templateScaffoldDir,\n dependencyManager,\n didInstallEverything,\n }),\n {concurrent: false},\n )\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 {concurrent: false},\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 Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/apps/getting-started')}\n Inspiration ${output.token.command(`${dependencyManager} shopify help`)}\n `)\n}\n\nfunction inferDependencyManager(optionsDependencyManager: string | undefined): dependency.DependencyManager {\n if (optionsDependencyManager && dependency.dependencyManager.includes(optionsDependencyManager)) {\n return optionsDependencyManager as dependency.DependencyManager\n }\n return dependency.dependencyManagerUsedForCreating()\n}\n\nexport default init\n","import initPrompt from '../prompts/init'\nimport initService from '../services/init'\nimport {Command, Flags} from '@oclif/core'\nimport {path, cli} from '@shopify/cli-kit'\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 path: Flags.string({\n char: 'p',\n env: 'SHOPIFY_FLAG_PATH',\n parse: (input, _) => Promise.resolve(path.resolve(input)),\n hidden: false,\n }),\n template: Flags.string({\n description: 'The app template. Eg, --template https://github.com/Shopify/shopify-app-node',\n env: 'SHOPIFY_FLAG_TEMPLATE',\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 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 dependencyManager: flags['dependency-manager'],\n template: promptAnswers.template,\n local: flags.local,\n directory,\n })\n }\n}\n"],"names":["init","initPrompt","initService"],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import {run, flush, settings} from '@oclif/core'\nimport {error as kitError, environment} from '@shopify/cli-kit'\n\nfunction runCreateApp() {\n const initIndex = process.argv.findIndex((arg) => arg.includes('init'))\n if (initIndex === -1) {\n const initIndex =\n process.argv.findIndex(\n (arg) => arg.includes('bin/create-app') || arg.includes('bin/dev') || arg.includes('bin/run'),\n ) + 1\n process.argv.splice(initIndex, 0, 'init')\n }\n\n if (environment.local.isDebug()) {\n settings.debug = true\n }\n\n // Start the CLI\n run(undefined, import.meta.url)\n .then(flush)\n .catch((error: Error): Promise<void | Error> => {\n const kitMapper = kitError.mapper\n const kitHandle = kitError.handler\n // eslint-disable-next-line promise/no-nesting\n return kitMapper(error).then((error: Error) => {\n kitHandle(error)\n })\n })\n}\n\nexport default runCreateApp\n"],"names":["error","kitError"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import {run, flush, settings} from '@oclif/core'\nimport {error as kitError, environment} from '@shopify/cli-kit'\n\nfunction runCreateApp() {\n const initIndex = process.argv.findIndex((arg) => arg.includes('init'))\n if (initIndex === -1) {\n const initIndex =\n process.argv.findIndex(\n (arg) => arg.includes('bin/create-app') || arg.includes('bin/dev') || arg.includes('bin/run'),\n ) + 1\n process.argv.splice(initIndex, 0, 'init')\n }\n\n if (environment.local.isDebug()) {\n settings.debug = true\n }\n\n // Start the CLI\n run(undefined, import.meta.url)\n .then(flush)\n .catch((error: Error): Promise<void | Error> => {\n const kitMapper = kitError.mapper\n const kitHandle = kitError.handler\n // eslint-disable-next-line promise/no-nesting\n return kitMapper(error).then((error: Error) => {\n kitHandle(error)\n })\n })\n}\n\nexport default runCreateApp\n"],"names":["error","kitError"],"mappings":";;;AAGA,SAAwB,YAAA,GAAA;AACtB,EAAM,MAAA,SAAA,GAAY,QAAQ,IAAK,CAAA,SAAA,CAAU,CAAC,GAAQ,KAAA,GAAA,CAAI,QAAS,CAAA,MAAM,CAAC,CAAA,CAAA;AACtE,EAAA,IAAI,cAAc,CAAI,CAAA,EAAA;AACpB,IAAA,MAAM,aACJ,OAAQ,CAAA,IAAA,CAAK,UACX,CAAC,GAAA,KAAQ,IAAI,QAAS,CAAA,gBAAgB,CAAK,IAAA,GAAA,CAAI,SAAS,SAAS,CAAA,IAAK,IAAI,QAAS,CAAA,SAAS,CAC9F,CAAI,GAAA,CAAA,CAAA;AACN,IAAA,OAAA,CAAQ,IAAK,CAAA,MAAA,CAAO,UAAW,EAAA,CAAA,EAAG,MAAM,CAAA,CAAA;AAAA,GAC1C;AAEA,EAAI,IAAA,WAAA,CAAY,KAAM,CAAA,OAAA,EAAW,EAAA;AAC/B,IAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AAAA,GACnB;AAGA,EAAI,GAAA,CAAA,KAAA,CAAA,EAAW,YAAY,GAAG,CAAA,CAC3B,KAAK,KAAK,CAAA,CACV,KAAM,CAAA,CAACA,OAAwC,KAAA;AAC9C,IAAA,MAAM,YAAYC,KAAS,CAAA,MAAA,CAAA;AAC3B,IAAA,MAAM,YAAYA,KAAS,CAAA,OAAA,CAAA;AAE3B,IAAA,OAAO,SAAU,CAAAD,OAAK,CAAE,CAAA,IAAA,CAAK,CAAC,MAAiB,KAAA;AAC7C,MAAA,SAAA,CAAU,MAAK,CAAA,CAAA;AAAA,KAChB,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AACL;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopify/create-app",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A CLI tool to create a new Shopify app.",
|
|
6
6
|
"type": "module",
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
"/bin/run.js",
|
|
25
25
|
"/bin/run.cmd",
|
|
26
26
|
"/dist",
|
|
27
|
-
"templates",
|
|
28
27
|
"/oclif.manifest.json"
|
|
29
28
|
],
|
|
30
29
|
"publishConfig": {
|
|
@@ -48,15 +47,15 @@
|
|
|
48
47
|
},
|
|
49
48
|
"dependencies": {
|
|
50
49
|
"@bugsnag/js": "^7.16.2",
|
|
51
|
-
"@oclif/core": "1.
|
|
52
|
-
"@shopify/cli-kit": "
|
|
50
|
+
"@oclif/core": "1.7.0",
|
|
51
|
+
"@shopify/cli-kit": "2.0.2"
|
|
53
52
|
},
|
|
54
53
|
"devDependencies": {
|
|
55
|
-
"vitest": "0.
|
|
54
|
+
"vitest": "0.10.0"
|
|
56
55
|
},
|
|
57
56
|
"engine-strict": true,
|
|
58
57
|
"engines": {
|
|
59
|
-
"node": "^14.13.1 || ^16.0.0 || ^17.0.0"
|
|
58
|
+
"node": "^14.13.1 || ^16.0.0 || ^17.0.0 || ^18.0.0"
|
|
60
59
|
},
|
|
61
60
|
"os": [
|
|
62
61
|
"darwin",
|
|
@@ -65,6 +64,9 @@
|
|
|
65
64
|
],
|
|
66
65
|
"oclif": {
|
|
67
66
|
"bin": "create-app",
|
|
68
|
-
"commands": "./dist/commands"
|
|
67
|
+
"commands": "./dist/commands",
|
|
68
|
+
"additionalHelpFlags": [
|
|
69
|
+
"-h"
|
|
70
|
+
]
|
|
69
71
|
}
|
|
70
72
|
}
|
package/templates/app/.gitignore
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
### macOS ###
|
|
2
|
-
# General
|
|
3
|
-
.DS_Store
|
|
4
|
-
.AppleDouble
|
|
5
|
-
.LSOverride
|
|
6
|
-
|
|
7
|
-
# Icon must end with two \r
|
|
8
|
-
Icon
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
# Thumbnails
|
|
12
|
-
._*
|
|
13
|
-
|
|
14
|
-
# Files that might appear in the root of a volume
|
|
15
|
-
.DocumentRevisions-V100
|
|
16
|
-
.fseventsd
|
|
17
|
-
.Spotlight-V100
|
|
18
|
-
.TemporaryItems
|
|
19
|
-
.Trashes
|
|
20
|
-
.VolumeIcon.icns
|
|
21
|
-
.com.apple.timemachine.donotpresent
|
|
22
|
-
|
|
23
|
-
# Directories potentially created on remote AFP share
|
|
24
|
-
.AppleDB
|
|
25
|
-
.AppleDesktop
|
|
26
|
-
Network Trash Folder
|
|
27
|
-
Temporary Items
|
|
28
|
-
.apdisk
|
|
29
|
-
|
|
30
|
-
### Node ###
|
|
31
|
-
# Logs
|
|
32
|
-
logs
|
|
33
|
-
*.log
|
|
34
|
-
npm-debug.log*
|
|
35
|
-
yarn-debug.log*
|
|
36
|
-
yarn-error.log*
|
|
37
|
-
lerna-debug.log*
|
|
38
|
-
.pnpm-debug.log*
|
|
39
|
-
|
|
40
|
-
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
41
|
-
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
42
|
-
|
|
43
|
-
# Runtime data
|
|
44
|
-
pids
|
|
45
|
-
*.pid
|
|
46
|
-
*.seed
|
|
47
|
-
*.pid.lock
|
|
48
|
-
|
|
49
|
-
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
50
|
-
lib-cov
|
|
51
|
-
|
|
52
|
-
# Coverage directory used by tools like istanbul
|
|
53
|
-
coverage
|
|
54
|
-
*.lcov
|
|
55
|
-
|
|
56
|
-
# nyc test coverage
|
|
57
|
-
.nyc_output
|
|
58
|
-
|
|
59
|
-
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
60
|
-
.grunt
|
|
61
|
-
|
|
62
|
-
# Bower dependency directory (https://bower.io/)
|
|
63
|
-
bower_components
|
|
64
|
-
|
|
65
|
-
# node-waf configuration
|
|
66
|
-
.lock-wscript
|
|
67
|
-
|
|
68
|
-
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
69
|
-
build/Release
|
|
70
|
-
|
|
71
|
-
# Dependency directories
|
|
72
|
-
node_modules/
|
|
73
|
-
jspm_packages/
|
|
74
|
-
|
|
75
|
-
# Snowpack dependency directory (https://snowpack.dev/)
|
|
76
|
-
web_modules/
|
|
77
|
-
|
|
78
|
-
# TypeScript cache
|
|
79
|
-
*.tsbuildinfo
|
|
80
|
-
|
|
81
|
-
# Optional npm cache directory
|
|
82
|
-
.npm
|
|
83
|
-
|
|
84
|
-
# Optional eslint cache
|
|
85
|
-
.eslintcache
|
|
86
|
-
|
|
87
|
-
# Optional stylelint cache
|
|
88
|
-
.stylelintcache
|
|
89
|
-
|
|
90
|
-
# Microbundle cache
|
|
91
|
-
.rpt2_cache/
|
|
92
|
-
.rts2_cache_cjs/
|
|
93
|
-
.rts2_cache_es/
|
|
94
|
-
.rts2_cache_umd/
|
|
95
|
-
|
|
96
|
-
# Optional REPL history
|
|
97
|
-
.node_repl_history
|
|
98
|
-
|
|
99
|
-
# Output of 'npm pack'
|
|
100
|
-
*.tgz
|
|
101
|
-
|
|
102
|
-
# Yarn Integrity file
|
|
103
|
-
.yarn-integrity
|
|
104
|
-
|
|
105
|
-
# dotenv environment variable files
|
|
106
|
-
.env
|
|
107
|
-
.env.development.local
|
|
108
|
-
.env.test.local
|
|
109
|
-
.env.production.local
|
|
110
|
-
.env.local
|
|
111
|
-
|
|
112
|
-
# parcel-bundler cache (https://parceljs.org/)
|
|
113
|
-
.cache
|
|
114
|
-
.parcel-cache
|
|
115
|
-
|
|
116
|
-
# Next.js build output
|
|
117
|
-
.next
|
|
118
|
-
out
|
|
119
|
-
|
|
120
|
-
# Nuxt.js build / generate output
|
|
121
|
-
.nuxt
|
|
122
|
-
dist
|
|
123
|
-
|
|
124
|
-
# Gatsby files
|
|
125
|
-
.cache/
|
|
126
|
-
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
127
|
-
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
128
|
-
# public
|
|
129
|
-
|
|
130
|
-
# vuepress build output
|
|
131
|
-
.vuepress/dist
|
|
132
|
-
|
|
133
|
-
# vuepress v2.x temp and cache directory
|
|
134
|
-
.temp
|
|
135
|
-
|
|
136
|
-
# Docusaurus cache and generated files
|
|
137
|
-
.docusaurus
|
|
138
|
-
|
|
139
|
-
# Serverless directories
|
|
140
|
-
.serverless/
|
|
141
|
-
|
|
142
|
-
# FuseBox cache
|
|
143
|
-
.fusebox/
|
|
144
|
-
|
|
145
|
-
# DynamoDB Local files
|
|
146
|
-
.dynamodb/
|
|
147
|
-
|
|
148
|
-
# TernJS port file
|
|
149
|
-
.tern-port
|
|
150
|
-
|
|
151
|
-
# Stores VSCode versions used for testing VSCode extensions
|
|
152
|
-
.vscode-test
|
|
153
|
-
|
|
154
|
-
# yarn v2
|
|
155
|
-
.yarn/cache
|
|
156
|
-
.yarn/unplugged
|
|
157
|
-
.yarn/build-state.yml
|
|
158
|
-
.yarn/install-state.gz
|
|
159
|
-
.pnp.*
|
|
160
|
-
|
|
161
|
-
### Node Patch ###
|
|
162
|
-
# Serverless Webpack directories
|
|
163
|
-
.webpack/
|
|
164
|
-
|
|
165
|
-
# Optional stylelint cache
|
|
166
|
-
|
|
167
|
-
# SvelteKit build / generate output
|
|
168
|
-
.svelte-kit
|
|
169
|
-
|
|
170
|
-
### react ###
|
|
171
|
-
.DS_*
|
|
172
|
-
**/*.backup.*
|
|
173
|
-
**/*.back.*
|
|
174
|
-
|
|
175
|
-
node_modules
|
|
176
|
-
|
|
177
|
-
*.sublime*
|
|
178
|
-
|
|
179
|
-
psd
|
|
180
|
-
thumb
|
|
181
|
-
sketch
|
|
182
|
-
|
|
183
|
-
# Shopify apps
|
|
184
|
-
build
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{name}}",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"main": "home/index.js",
|
|
5
|
-
"license": "UNLICENSED",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"shopify": "shopify",
|
|
8
|
-
"build": "shopify app build",
|
|
9
|
-
"dev": "shopify app dev",
|
|
10
|
-
"push": "shopify app push",
|
|
11
|
-
"scaffold": "shopify app scaffold",
|
|
12
|
-
"deploy": "shopify app deploy"
|
|
13
|
-
},
|
|
14
|
-
"dependencies": {
|
|
15
|
-
"@shopify/cli": "{{shopify_cli_version}}",
|
|
16
|
-
"@shopify/app": "{{shopify_app_version}}",
|
|
17
|
-
"react": "17.0.2"
|
|
18
|
-
},{% if dependency_overrides.size > 0 %}{% if dependency_overrides %}
|
|
19
|
-
"overrides": {
|
|
20
|
-
{% for dependency in dependency_overrides %}
|
|
21
|
-
"{{dependency[0]}}": "{{dependency[1]}}"{% unless forloop.last %},{% endunless %}{% endfor %}
|
|
22
|
-
},{% endif %}{% endif %}{% if dependency_overrides.size > 0 %}{% if dependency_overrides %}
|
|
23
|
-
"resolutions": {
|
|
24
|
-
{% for dependency in dependency_overrides %}
|
|
25
|
-
"{{dependency[0]}}": "{{dependency[1]}}"{% unless forloop.last %},{% endunless %}{% endfor %}
|
|
26
|
-
},{% endif %}{% endif %}
|
|
27
|
-
"author": "{{author}}"
|
|
28
|
-
}
|