@shopify/create-app 3.0.18 → 3.0.21
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 +28 -0
- package/dist/commands/init.js +21 -4
- package/dist/commands/init.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @shopify/create-app
|
|
2
2
|
|
|
3
|
+
## 3.0.21
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @shopify/cli-kit@3.0.21
|
|
8
|
+
|
|
9
|
+
## 3.0.20
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 5d422ea9: - Use a shallow repo clone to speed up cloning template repos
|
|
14
|
+
- Display progress of git clones
|
|
15
|
+
- Updated dependencies [5d422ea9]
|
|
16
|
+
- @shopify/cli-kit@3.0.20
|
|
17
|
+
|
|
18
|
+
## 3.0.19
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- f5a73830: Abort create-app if a directory with the same name already exists
|
|
23
|
+
- Updated dependencies [d73ea66a]
|
|
24
|
+
- Updated dependencies [45866b2a]
|
|
25
|
+
- Updated dependencies [3c9519fa]
|
|
26
|
+
- Updated dependencies [0550cb31]
|
|
27
|
+
- Updated dependencies [fd254893]
|
|
28
|
+
- Updated dependencies [cc4c0151]
|
|
29
|
+
- @shopify/cli-kit@3.0.19
|
|
30
|
+
|
|
3
31
|
## 3.0.18
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
package/dist/commands/init.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { haiku, ui, path, dependency, file, string, github, git, template, npm, environment, output, cli, analytics
|
|
1
|
+
import { haiku, ui, path, dependency, file, string, github, git, template, npm, environment, output, error, cli, analytics } from '@shopify/cli-kit';
|
|
2
2
|
import { Writable } from 'stream';
|
|
3
3
|
import { Flags, Command } from '@oclif/core';
|
|
4
4
|
|
|
@@ -50,9 +50,9 @@ const init$1 = async (options, prompt = ui.prompt) => {
|
|
|
50
50
|
return answers;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
var version$1 = "3.0.
|
|
53
|
+
var version$1 = "3.0.21";
|
|
54
54
|
|
|
55
|
-
var version = "3.0.
|
|
55
|
+
var version = "3.0.21";
|
|
56
56
|
|
|
57
57
|
async function updateCLIDependencies(packageJSON, local) {
|
|
58
58
|
packageJSON.dependencies = packageJSON.dependencies || {};
|
|
@@ -122,11 +122,17 @@ async function cleanup(webOutputDirectory) {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
const DirectoryExistsError = (name) => {
|
|
126
|
+
return new error.Abort(`
|
|
127
|
+
A directory with this name (${name}) already exists.
|
|
128
|
+
Choose a new name for your app.`);
|
|
129
|
+
};
|
|
125
130
|
async function init(options) {
|
|
126
131
|
const dependencyManager = inferDependencyManager(options.dependencyManager);
|
|
127
132
|
const hyphenizedName = string.hyphenize(options.name);
|
|
128
133
|
const outputDirectory = path.join(options.directory, hyphenizedName);
|
|
129
134
|
const githubRepo = github.parseGithubRepoReference(options.template);
|
|
135
|
+
await ensureAppDirectoryIsAvailable(outputDirectory, hyphenizedName);
|
|
130
136
|
await file.inTemporaryDirectory(async (tmpDir) => {
|
|
131
137
|
const templateDownloadDir = path.join(tmpDir, "download");
|
|
132
138
|
const templatePathDir = githubRepo.filePath ? path.join(templateDownloadDir, githubRepo.filePath) : templateDownloadDir;
|
|
@@ -141,7 +147,13 @@ async function init(options) {
|
|
|
141
147
|
task.title = "Downloading template";
|
|
142
148
|
await git.downloadRepository({
|
|
143
149
|
repoUrl,
|
|
144
|
-
destination: templateDownloadDir
|
|
150
|
+
destination: templateDownloadDir,
|
|
151
|
+
shallow: true,
|
|
152
|
+
progressUpdater: (statusString) => {
|
|
153
|
+
const taskOutput = `Cloning template from ${repoUrl}:
|
|
154
|
+
${statusString}`;
|
|
155
|
+
task.output = taskOutput;
|
|
156
|
+
}
|
|
145
157
|
});
|
|
146
158
|
task.title = "Template downloaded";
|
|
147
159
|
}
|
|
@@ -245,6 +257,11 @@ function inferDependencyManager(optionsDependencyManager) {
|
|
|
245
257
|
}
|
|
246
258
|
return dependency.dependencyManagerUsedForCreating();
|
|
247
259
|
}
|
|
260
|
+
async function ensureAppDirectoryIsAvailable(directory, name) {
|
|
261
|
+
const exists = await file.exists(directory);
|
|
262
|
+
if (exists)
|
|
263
|
+
throw DirectoryExistsError(name);
|
|
264
|
+
}
|
|
248
265
|
|
|
249
266
|
const InvalidGithubRepository = () => {
|
|
250
267
|
return new error.Abort("Only GitHub repository references are supported. e.g.: https://github.com/Shopify/<repository>/[subpath]#[branch]");
|
|
@@ -1 +1 @@
|
|
|
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 {haiku, 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\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\nexport const templateURLMap = {\n node: 'https://github.com/Shopify/shopify-app-template-node#cli_three',\n php: 'https://github.com/Shopify/shopify-app-template-php#cli_three',\n ruby: 'https://github.com/Shopify/shopify-app-template-ruby',\n} as const\n\nconst init = async (options: InitOptions, prompt = ui.prompt): Promise<InitOutput> => {\n const defaults = {\n name: haiku.generate('app'),\n template: templateURLMap.node,\n } as const\n\n const questions: ui.Question<'name' | 'template'>[] = []\n if (!options.name) {\n questions.push({\n type: 'input',\n name: 'name',\n preface: '\\nWelcome. Let’s get started by naming your app. You can change it later.',\n message: \"Your app's name?\",\n default: defaults.name,\n validate: (value) => {\n if (value.length === 0) {\n return \"App Name can't be empty\"\n }\n if (value.length > 30) {\n return 'Enter a shorter name (30 character max.)'\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 {version as cliVersion} from '../../../../cli-main/package.json'\nimport {version as appVersion} from '../../../../app/package.json'\nimport {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'] = cliVersion\n packageJSON.dependencies['@shopify/app'] = appVersion\n\n if (local) {\n const cliPath = `file:${(await path.findUp('packages/cli-main', {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 path.join(webOutputDirectory, '**', 'frontend/LICENSE*'),\n path.join(webOutputDirectory, 'package.json.cli2'),\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, github, environment} 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: dependency.DependencyManager = inferDependencyManager(options.dependencyManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n const githubRepo = github.parseGithubRepoReference(options.template)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templatePathDir = githubRepo.filePath\n ? path.join(templateDownloadDir, githubRepo.filePath)\n : templateDownloadDir\n const templateScaffoldDir = path.join(tmpDir, 'app')\n const repoUrl = githubRepo.branch ? `${githubRepo.repoBaseUrl}#${githubRepo.branch}` : githubRepo.repoBaseUrl\n\n await file.mkdir(templateDownloadDir)\n let tasks: ConstructorParameters<typeof ui.Listr>[0] = []\n\n tasks = tasks.concat([\n {\n title: 'Download template',\n task: async (_, task) => {\n task.title = 'Downloading template'\n await git.downloadRepository({\n repoUrl,\n destination: templateDownloadDir,\n })\n task.title = 'Template downloaded'\n },\n },\n {\n title: `Initialize your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n parentTask.title = `Initializing your app ${hyphenizedName}`\n return parentTask.newListr([\n {\n title: 'Parse liquid',\n task: async (_, task) => {\n task.title = 'Parsing liquid'\n await template.recursiveDirectoryCopy(templatePathDir, templateScaffoldDir, {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dependency_manager: dependencyManager,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n app_name: options.name,\n })\n\n task.title = 'Liquid parsed'\n },\n },\n {\n title: 'Update package.json',\n task: async (_, task) => {\n task.title = 'Updating package.json'\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 = 'Updated package.json'\n parentTask.title = 'App initialized'\n },\n },\n ])\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configure the project's NPM registry\",\n task: async (_, task) => {\n task.title = \"[Shopifolks-only] Configuring the project's NPM registry\"\n const npmrcPath = path.join(templateScaffoldDir, '.npmrc')\n const npmrcContent = `@shopify:registry=https://registry.npmjs.org\\n`\n await file.append(npmrcPath, npmrcContent)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Install dependencies with ${dependencyManager}`,\n task: async (_, parentTask) => {\n parentTask.title = `Installing dependencies with ${dependencyManager}`\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: 'Clean up',\n task: async (_, task) => {\n task.title = 'Cleaning up'\n await cleanup(templateScaffoldDir)\n task.title = 'Completed clean up'\n },\n },\n {\n title: 'Initializing a Git repository...',\n task: async (_, task) => {\n await git.initializeRepository(templateScaffoldDir)\n task.title = 'Git repository initialized'\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 await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n ${hyphenizedName} is ready for you to build! Remember to ${output.token.genericShellCommand(`cd ${hyphenizedName}`)}\n To preview your project, run ${output.token.packagejsonScript(dependencyManager, 'dev')}\n To add extensions, run ${output.token.packagejsonScript(dependencyManager, 'scaffold extension')}\n For more details on all that you can build, see the docs: ${output.token.link(\n 'shopify.dev',\n 'https://shopify.dev',\n )} ✨\n\n For help and a list of commands, enter ${output.token.packagejsonScript(dependencyManager, 'shopify app', '--help')}\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","import initPrompt, {templateURLMap} from '../prompts/init'\nimport initService from '../services/init'\nimport {Command, Flags} from '@oclif/core'\nimport {path, cli, analytics, error, output} from '@shopify/cli-kit'\n\nconst InvalidGithubRepository = () => {\n return new error.Abort(\n 'Only GitHub repository references are supported. e.g.: https://github.com/Shopify/<repository>/[subpath]#[branch]',\n )\n}\n\nconst UnsupportedTemplateAlias = () => {\n return new error.Abort(\n output.content`Only ${Object.keys(templateURLMap)\n .map((alias) => output.content`${output.token.yellow(alias)}`.value)\n .join(', ')} template aliases are supported`,\n )\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. Accepts one of the following:\n - <${Object.keys(templateURLMap).join('|')}>\n - Any GitHub repo with optional branch and subpath eg: https://github.com/Shopify/<repository>/[subpath]#[branch]`,\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\n this.validateTemplateValue(flags.template)\n\n const promptAnswers = await initPrompt({\n name: flags.name,\n template: flags.template,\n })\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 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 validateTemplateValue(template: string | undefined) {\n if (!template) {\n return\n }\n\n const url = this.parseURL(template)\n if (url && url.origin !== 'https://github.com') throw InvalidGithubRepository()\n if (!url && !Object.keys(templateURLMap).includes(template)) throw UnsupportedTemplateAlias()\n }\n\n parseURL(url: string): URL | undefined {\n try {\n return new URL(url)\n // eslint-disable-next-line no-catch-all/no-catch-all\n } catch (error) {\n return undefined\n }\n }\n}\n"],"names":["init","cliVersion","appVersion","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 {haiku, 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\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\nexport const templateURLMap = {\n node: 'https://github.com/Shopify/shopify-app-template-node#cli_three',\n php: 'https://github.com/Shopify/shopify-app-template-php#cli_three',\n ruby: 'https://github.com/Shopify/shopify-app-template-ruby',\n} as const\n\nconst init = async (options: InitOptions, prompt = ui.prompt): Promise<InitOutput> => {\n const defaults = {\n name: haiku.generate('app'),\n template: templateURLMap.node,\n } as const\n\n const questions: ui.Question<'name' | 'template'>[] = []\n if (!options.name) {\n questions.push({\n type: 'input',\n name: 'name',\n preface: '\\nWelcome. Let’s get started by naming your app. You can change it later.',\n message: \"Your app's name?\",\n default: defaults.name,\n validate: (value) => {\n if (value.length === 0) {\n return \"App Name can't be empty\"\n }\n if (value.length > 30) {\n return 'Enter a shorter name (30 character max.)'\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 {version as cliVersion} from '../../../../cli-main/package.json'\nimport {version as appVersion} from '../../../../app/package.json'\nimport {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'] = cliVersion\n packageJSON.dependencies['@shopify/app'] = appVersion\n\n if (local) {\n const cliPath = `file:${(await path.findUp('packages/cli-main', {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 path.join(webOutputDirectory, '**', 'frontend/LICENSE*'),\n path.join(webOutputDirectory, 'package.json.cli2'),\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 {\n string,\n path,\n file,\n output,\n ui,\n dependency,\n template,\n npm,\n git,\n github,\n environment,\n error,\n} 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\nconst DirectoryExistsError = (name: string) => {\n return new error.Abort(`\\nA directory with this name (${name}) already exists.\\nChoose a new name for your app.`)\n}\n\nasync function init(options: InitOptions) {\n const dependencyManager: dependency.DependencyManager = inferDependencyManager(options.dependencyManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n const githubRepo = github.parseGithubRepoReference(options.template)\n\n await ensureAppDirectoryIsAvailable(outputDirectory, hyphenizedName)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templatePathDir = githubRepo.filePath\n ? path.join(templateDownloadDir, githubRepo.filePath)\n : templateDownloadDir\n const templateScaffoldDir = path.join(tmpDir, 'app')\n const repoUrl = githubRepo.branch ? `${githubRepo.repoBaseUrl}#${githubRepo.branch}` : githubRepo.repoBaseUrl\n\n await file.mkdir(templateDownloadDir)\n let tasks: ConstructorParameters<typeof ui.Listr>[0] = []\n\n tasks = tasks.concat([\n {\n title: 'Download template',\n task: async (_, task) => {\n task.title = 'Downloading template'\n await git.downloadRepository({\n repoUrl,\n destination: templateDownloadDir,\n shallow: true,\n progressUpdater: (statusString: string) => {\n const taskOutput = `Cloning template from ${repoUrl}:\\n${statusString}`\n task.output = taskOutput\n },\n })\n task.title = 'Template downloaded'\n },\n },\n {\n title: `Initialize your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n parentTask.title = `Initializing your app ${hyphenizedName}`\n return parentTask.newListr([\n {\n title: 'Parse liquid',\n task: async (_, task) => {\n task.title = 'Parsing liquid'\n await template.recursiveDirectoryCopy(templatePathDir, templateScaffoldDir, {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dependency_manager: dependencyManager,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n app_name: options.name,\n })\n\n task.title = 'Liquid parsed'\n },\n },\n {\n title: 'Update package.json',\n task: async (_, task) => {\n task.title = 'Updating package.json'\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 = 'Updated package.json'\n parentTask.title = 'App initialized'\n },\n },\n ])\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configure the project's NPM registry\",\n task: async (_, task) => {\n task.title = \"[Shopifolks-only] Configuring the project's NPM registry\"\n const npmrcPath = path.join(templateScaffoldDir, '.npmrc')\n const npmrcContent = `@shopify:registry=https://registry.npmjs.org\\n`\n await file.append(npmrcPath, npmrcContent)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Install dependencies with ${dependencyManager}`,\n task: async (_, parentTask) => {\n parentTask.title = `Installing dependencies with ${dependencyManager}`\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: 'Clean up',\n task: async (_, task) => {\n task.title = 'Cleaning up'\n await cleanup(templateScaffoldDir)\n task.title = 'Completed clean up'\n },\n },\n {\n title: 'Initializing a Git repository...',\n task: async (_, task) => {\n await git.initializeRepository(templateScaffoldDir)\n task.title = 'Git repository initialized'\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 await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n ${hyphenizedName} is ready for you to build! Remember to ${output.token.genericShellCommand(`cd ${hyphenizedName}`)}\n To preview your project, run ${output.token.packagejsonScript(dependencyManager, 'dev')}\n To add extensions, run ${output.token.packagejsonScript(dependencyManager, 'scaffold extension')}\n For more details on all that you can build, see the docs: ${output.token.link(\n 'shopify.dev',\n 'https://shopify.dev',\n )} ✨\n\n For help and a list of commands, enter ${output.token.packagejsonScript(dependencyManager, 'shopify app', '--help')}\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\nasync function ensureAppDirectoryIsAvailable(directory: string, name: string): Promise<void> {\n const exists = await file.exists(directory)\n if (exists) throw DirectoryExistsError(name)\n}\n\nexport default init\n","import initPrompt, {templateURLMap} from '../prompts/init'\nimport initService from '../services/init'\nimport {Command, Flags} from '@oclif/core'\nimport {path, cli, analytics, error, output} from '@shopify/cli-kit'\n\nconst InvalidGithubRepository = () => {\n return new error.Abort(\n 'Only GitHub repository references are supported. e.g.: https://github.com/Shopify/<repository>/[subpath]#[branch]',\n )\n}\n\nconst UnsupportedTemplateAlias = () => {\n return new error.Abort(\n output.content`Only ${Object.keys(templateURLMap)\n .map((alias) => output.content`${output.token.yellow(alias)}`.value)\n .join(', ')} template aliases are supported`,\n )\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. Accepts one of the following:\n - <${Object.keys(templateURLMap).join('|')}>\n - Any GitHub repo with optional branch and subpath eg: https://github.com/Shopify/<repository>/[subpath]#[branch]`,\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\n this.validateTemplateValue(flags.template)\n\n const promptAnswers = await initPrompt({\n name: flags.name,\n template: flags.template,\n })\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 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 validateTemplateValue(template: string | undefined) {\n if (!template) {\n return\n }\n\n const url = this.parseURL(template)\n if (url && url.origin !== 'https://github.com') throw InvalidGithubRepository()\n if (!url && !Object.keys(templateURLMap).includes(template)) throw UnsupportedTemplateAlias()\n }\n\n parseURL(url: string): URL | undefined {\n try {\n return new URL(url)\n // eslint-disable-next-line no-catch-all/no-catch-all\n } catch (error) {\n return undefined\n }\n }\n}\n"],"names":["init","cliVersion","appVersion","initPrompt","initService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopify/create-app",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.21",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A CLI tool to create a new Shopify app.",
|
|
6
6
|
"type": "module",
|
|
@@ -48,10 +48,10 @@
|
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@bugsnag/js": "^7.16.7",
|
|
50
50
|
"@oclif/core": "^1.0",
|
|
51
|
-
"@shopify/cli-kit": "^3.0.
|
|
51
|
+
"@shopify/cli-kit": "^3.0.21"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"vitest": "0.
|
|
54
|
+
"vitest": "^0.15.1"
|
|
55
55
|
},
|
|
56
56
|
"engine-strict": true,
|
|
57
57
|
"engines": {
|