create-strapi-app 5.12.0 → 5.12.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.
Files changed (77) hide show
  1. package/dist/cloud.js +65 -0
  2. package/dist/cloud.js.map +1 -0
  3. package/dist/cloud.mjs +63 -0
  4. package/dist/cloud.mjs.map +1 -0
  5. package/dist/create-strapi.js +251 -0
  6. package/dist/create-strapi.js.map +1 -0
  7. package/dist/create-strapi.mjs +249 -0
  8. package/dist/create-strapi.mjs.map +1 -0
  9. package/dist/index.js +35 -1330
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +15 -1291
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/prompts.js +66 -0
  14. package/dist/prompts.js.map +1 -0
  15. package/dist/prompts.mjs +60 -0
  16. package/dist/prompts.mjs.map +1 -0
  17. package/dist/types.js +8 -0
  18. package/dist/types.js.map +1 -0
  19. package/dist/types.mjs +6 -0
  20. package/dist/types.mjs.map +1 -0
  21. package/dist/utils/check-install-path.js +28 -0
  22. package/dist/utils/check-install-path.js.map +1 -0
  23. package/dist/utils/check-install-path.mjs +26 -0
  24. package/dist/utils/check-install-path.mjs.map +1 -0
  25. package/dist/utils/check-requirements.js +26 -0
  26. package/dist/utils/check-requirements.js.map +1 -0
  27. package/dist/utils/check-requirements.mjs +24 -0
  28. package/dist/utils/check-requirements.mjs.map +1 -0
  29. package/dist/utils/database.js +190 -0
  30. package/dist/utils/database.js.map +1 -0
  31. package/dist/utils/database.mjs +187 -0
  32. package/dist/utils/database.mjs.map +1 -0
  33. package/dist/utils/dot-env.js +46 -0
  34. package/dist/utils/dot-env.js.map +1 -0
  35. package/dist/utils/dot-env.mjs +44 -0
  36. package/dist/utils/dot-env.mjs.map +1 -0
  37. package/dist/utils/engines.js +9 -0
  38. package/dist/utils/engines.js.map +1 -0
  39. package/dist/utils/engines.mjs +7 -0
  40. package/dist/utils/engines.mjs.map +1 -0
  41. package/dist/utils/get-package-manager-args.js +135 -0
  42. package/dist/utils/get-package-manager-args.js.map +1 -0
  43. package/dist/utils/get-package-manager-args.mjs +132 -0
  44. package/dist/utils/get-package-manager-args.mjs.map +1 -0
  45. package/dist/utils/git.js +73 -0
  46. package/dist/utils/git.js.map +1 -0
  47. package/dist/utils/git.mjs +71 -0
  48. package/dist/utils/git.mjs.map +1 -0
  49. package/dist/utils/gitignore.js +139 -0
  50. package/dist/utils/gitignore.js.map +1 -0
  51. package/dist/utils/gitignore.mjs +137 -0
  52. package/dist/utils/gitignore.mjs.map +1 -0
  53. package/dist/utils/logger.js +54 -0
  54. package/dist/utils/logger.js.map +1 -0
  55. package/dist/utils/logger.mjs +52 -0
  56. package/dist/utils/logger.mjs.map +1 -0
  57. package/dist/utils/machine-id.js +17 -0
  58. package/dist/utils/machine-id.js.map +1 -0
  59. package/dist/utils/machine-id.mjs +15 -0
  60. package/dist/utils/machine-id.mjs.map +1 -0
  61. package/dist/utils/package-json.js +32 -0
  62. package/dist/utils/package-json.js.map +1 -0
  63. package/dist/utils/package-json.mjs +30 -0
  64. package/dist/utils/package-json.mjs.map +1 -0
  65. package/dist/utils/parse-to-chalk.js +25 -0
  66. package/dist/utils/parse-to-chalk.js.map +1 -0
  67. package/dist/utils/parse-to-chalk.mjs +23 -0
  68. package/dist/utils/parse-to-chalk.mjs.map +1 -0
  69. package/dist/utils/template.js +180 -0
  70. package/dist/utils/template.js.map +1 -0
  71. package/dist/utils/template.mjs +159 -0
  72. package/dist/utils/template.mjs.map +1 -0
  73. package/dist/utils/usage.js +90 -0
  74. package/dist/utils/usage.js.map +1 -0
  75. package/dist/utils/usage.mjs +87 -0
  76. package/dist/utils/usage.mjs.map +1 -0
  77. package/package.json +4 -4
@@ -0,0 +1,249 @@
1
+ import { join } from 'node:path';
2
+ import chalk from 'chalk';
3
+ import execa from 'execa';
4
+ import fse from 'fs-extra';
5
+ import { copyTemplate } from './utils/template.mjs';
6
+ import { tryGitInit } from './utils/git.mjs';
7
+ import { trackUsage } from './utils/usage.mjs';
8
+ import { createPackageJSON } from './utils/package-json.mjs';
9
+ import { generateDotEnv } from './utils/dot-env.mjs';
10
+ import { isStderrError } from './types.mjs';
11
+ import { logger } from './utils/logger.mjs';
12
+ import { gitIgnore } from './utils/gitignore.mjs';
13
+ import { getInstallArgs } from './utils/get-package-manager-args.mjs';
14
+
15
+ async function createStrapi(scope) {
16
+ const { rootPath } = scope;
17
+ try {
18
+ await fse.ensureDir(rootPath);
19
+ await createApp(scope);
20
+ } catch (error) {
21
+ await fse.remove(rootPath);
22
+ throw error;
23
+ }
24
+ }
25
+ async function createApp(scope) {
26
+ const { rootPath, useTypescript, useExample, installDependencies, isQuickstart, template, packageManager, gitInit, runApp } = scope;
27
+ const shouldRunSeed = useExample && installDependencies;
28
+ await trackUsage({
29
+ event: 'willCreateProject',
30
+ scope
31
+ });
32
+ logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);
33
+ if (!isQuickstart) {
34
+ await trackUsage({
35
+ event: 'didChooseCustomDatabase',
36
+ scope
37
+ });
38
+ } else {
39
+ await trackUsage({
40
+ event: 'didChooseQuickstart',
41
+ scope
42
+ });
43
+ }
44
+ if (!template) {
45
+ let templateName = useExample ? 'example' : 'vanilla';
46
+ if (!useTypescript) {
47
+ templateName = `${templateName}-js`;
48
+ }
49
+ const internalTemplatePath = join(__dirname, '../templates', templateName);
50
+ if (await fse.exists(internalTemplatePath)) {
51
+ await fse.copy(internalTemplatePath, rootPath);
52
+ }
53
+ } else {
54
+ try {
55
+ logger.info(`${chalk.cyan('Installing template')} ${template}`);
56
+ await copyTemplate(scope, rootPath);
57
+ logger.success('Template copied successfully.');
58
+ } catch (error) {
59
+ if (error instanceof Error) {
60
+ logger.fatal(`Template installation failed: ${error.message}`);
61
+ }
62
+ throw error;
63
+ }
64
+ if (!fse.existsSync(join(rootPath, 'package.json'))) {
65
+ logger.fatal(`Missing ${chalk.bold('package.json')} in template`);
66
+ }
67
+ }
68
+ await trackUsage({
69
+ event: 'didCopyProjectFiles',
70
+ scope
71
+ });
72
+ try {
73
+ await createPackageJSON(scope);
74
+ await trackUsage({
75
+ event: 'didWritePackageJSON',
76
+ scope
77
+ });
78
+ // ensure node_modules is created
79
+ await fse.ensureDir(join(rootPath, 'node_modules'));
80
+ // create config/database
81
+ await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));
82
+ await trackUsage({
83
+ event: 'didCopyConfigurationFiles',
84
+ scope
85
+ });
86
+ } catch (err) {
87
+ await fse.remove(rootPath);
88
+ throw err;
89
+ }
90
+ if (installDependencies) {
91
+ try {
92
+ logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);
93
+ await trackUsage({
94
+ event: 'willInstallProjectDependencies',
95
+ scope
96
+ });
97
+ await runInstall(scope);
98
+ await trackUsage({
99
+ event: 'didInstallProjectDependencies',
100
+ scope
101
+ });
102
+ logger.success(`Dependencies installed`);
103
+ } catch (error) {
104
+ const stderr = isStderrError(error) ? error.stderr : '';
105
+ await trackUsage({
106
+ event: 'didNotInstallProjectDependencies',
107
+ scope,
108
+ error: stderr.slice(-1024)
109
+ });
110
+ logger.fatal([
111
+ chalk.bold('Oh, it seems that you encountered an error while installing dependencies in your project'),
112
+ '',
113
+ `Don't give up, your project was created correctly`,
114
+ '',
115
+ `Fix the issues mentioned in the installation errors and try to run the following command:`,
116
+ '',
117
+ `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`
118
+ ]);
119
+ }
120
+ }
121
+ await trackUsage({
122
+ event: 'didCreateProject',
123
+ scope
124
+ });
125
+ // make sure a gitignore file is created regardless of the user using git or not
126
+ if (!await fse.exists(join(rootPath, '.gitignore'))) {
127
+ await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);
128
+ }
129
+ // Init git
130
+ if (gitInit) {
131
+ logger.title('git', 'Initializing git repository.');
132
+ await tryGitInit(rootPath);
133
+ logger.success('Initialized a git repository.');
134
+ }
135
+ if (shouldRunSeed) {
136
+ if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {
137
+ logger.title('Seed', 'Seeding your database with sample data');
138
+ try {
139
+ await execa(packageManager, [
140
+ 'run',
141
+ 'seed:example'
142
+ ], {
143
+ stdio: 'inherit',
144
+ cwd: rootPath
145
+ });
146
+ logger.success('Sample data added to your database');
147
+ } catch (error) {
148
+ logger.error('Failed to seed your database. Skipping');
149
+ }
150
+ }
151
+ }
152
+ const cmd = chalk.cyan(`${packageManager} run`);
153
+ logger.title('Strapi', `Your application was created!`);
154
+ logger.log([
155
+ 'Available commands in your project:',
156
+ '',
157
+ 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',
158
+ `${cmd} develop`,
159
+ '',
160
+ 'Start Strapi without watch mode.',
161
+ `${cmd} start`,
162
+ '',
163
+ 'Build Strapi admin panel.',
164
+ `${cmd} build`,
165
+ '',
166
+ 'Deploy Strapi project.',
167
+ `${cmd} deploy`,
168
+ ''
169
+ ]);
170
+ if (useExample) {
171
+ logger.log([
172
+ 'Seed your database with sample data.',
173
+ `${cmd} seed:example`,
174
+ ''
175
+ ]);
176
+ }
177
+ logger.log([
178
+ 'Display all available commands.',
179
+ `${cmd} strapi\n`
180
+ ]);
181
+ if (installDependencies) {
182
+ logger.log([
183
+ 'To get started run',
184
+ '',
185
+ `${chalk.cyan('cd')} ${rootPath}`,
186
+ !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`
187
+ ]);
188
+ } else {
189
+ logger.log([
190
+ 'To get started run',
191
+ '',
192
+ `${chalk.cyan('cd')} ${rootPath}`,
193
+ `${chalk.cyan(packageManager)} install`,
194
+ !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`
195
+ ]);
196
+ }
197
+ if (runApp && installDependencies) {
198
+ logger.title('Run', 'Running your Strapi application');
199
+ try {
200
+ await trackUsage({
201
+ event: 'willStartServer',
202
+ scope
203
+ });
204
+ await execa(packageManager, [
205
+ 'run',
206
+ 'develop'
207
+ ], {
208
+ stdio: 'inherit',
209
+ cwd: rootPath,
210
+ env: {
211
+ FORCE_COLOR: '1'
212
+ }
213
+ });
214
+ } catch (error) {
215
+ if (typeof error === 'string' || error instanceof Error) {
216
+ await trackUsage({
217
+ event: 'didNotStartServer',
218
+ scope,
219
+ error
220
+ });
221
+ }
222
+ logger.fatal('Failed to start your Strapi application');
223
+ }
224
+ }
225
+ }
226
+ async function runInstall({ rootPath, packageManager }) {
227
+ // include same cwd and env to ensure version check returns same version we use below
228
+ const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {
229
+ cwd: rootPath,
230
+ env: {
231
+ ...process.env,
232
+ NODE_ENV: 'development'
233
+ }
234
+ });
235
+ const options = {
236
+ cwd: rootPath,
237
+ stdio: 'inherit',
238
+ env: {
239
+ ...process.env,
240
+ ...envArgs,
241
+ NODE_ENV: 'development'
242
+ }
243
+ };
244
+ const proc = execa(packageManager, cmdArgs, options);
245
+ return proc;
246
+ }
247
+
248
+ export { createStrapi };
249
+ //# sourceMappingURL=create-strapi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-strapi.mjs","sources":["../src/create-strapi.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport fse from 'fs-extra';\n\nimport { copyTemplate } from './utils/template';\nimport { tryGitInit } from './utils/git';\nimport { trackUsage } from './utils/usage';\nimport { createPackageJSON } from './utils/package-json';\nimport { generateDotEnv } from './utils/dot-env';\nimport { isStderrError } from './types';\n\nimport type { Scope } from './types';\nimport { logger } from './utils/logger';\nimport { gitIgnore } from './utils/gitignore';\nimport { getInstallArgs } from './utils/get-package-manager-args';\n\nasync function createStrapi(scope: Scope) {\n const { rootPath } = scope;\n try {\n await fse.ensureDir(rootPath);\n await createApp(scope);\n } catch (error) {\n await fse.remove(rootPath);\n\n throw error;\n }\n}\n\nasync function createApp(scope: Scope) {\n const {\n rootPath,\n useTypescript,\n useExample,\n installDependencies,\n isQuickstart,\n template,\n packageManager,\n gitInit,\n runApp,\n } = scope;\n\n const shouldRunSeed = useExample && installDependencies;\n\n await trackUsage({ event: 'willCreateProject', scope });\n\n logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);\n\n if (!isQuickstart) {\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n } else {\n await trackUsage({ event: 'didChooseQuickstart', scope });\n }\n\n if (!template) {\n let templateName = useExample ? 'example' : 'vanilla';\n\n if (!useTypescript) {\n templateName = `${templateName}-js`;\n }\n\n const internalTemplatePath = join(__dirname, '../templates', templateName);\n if (await fse.exists(internalTemplatePath)) {\n await fse.copy(internalTemplatePath, rootPath);\n }\n } else {\n try {\n logger.info(`${chalk.cyan('Installing template')} ${template}`);\n\n await copyTemplate(scope, rootPath);\n\n logger.success('Template copied successfully.');\n } catch (error) {\n if (error instanceof Error) {\n logger.fatal(`Template installation failed: ${error.message}`);\n }\n\n throw error;\n }\n\n if (!fse.existsSync(join(rootPath, 'package.json'))) {\n logger.fatal(`Missing ${chalk.bold('package.json')} in template`);\n }\n }\n\n await trackUsage({ event: 'didCopyProjectFiles', scope });\n\n try {\n await createPackageJSON(scope);\n\n await trackUsage({ event: 'didWritePackageJSON', scope });\n\n // ensure node_modules is created\n await fse.ensureDir(join(rootPath, 'node_modules'));\n\n // create config/database\n await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));\n\n await trackUsage({ event: 'didCopyConfigurationFiles', scope });\n } catch (err) {\n await fse.remove(rootPath);\n throw err;\n }\n\n if (installDependencies) {\n try {\n logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);\n\n await trackUsage({ event: 'willInstallProjectDependencies', scope });\n\n await runInstall(scope);\n\n await trackUsage({ event: 'didInstallProjectDependencies', scope });\n\n logger.success(`Dependencies installed`);\n } catch (error) {\n const stderr = isStderrError(error) ? error.stderr : '';\n\n await trackUsage({\n event: 'didNotInstallProjectDependencies',\n scope,\n error: stderr.slice(-1024),\n });\n\n logger.fatal([\n chalk.bold(\n 'Oh, it seems that you encountered an error while installing dependencies in your project'\n ),\n '',\n `Don't give up, your project was created correctly`,\n '',\n `Fix the issues mentioned in the installation errors and try to run the following command:`,\n '',\n `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`,\n ]);\n }\n }\n\n await trackUsage({ event: 'didCreateProject', scope });\n\n // make sure a gitignore file is created regardless of the user using git or not\n if (!(await fse.exists(join(rootPath, '.gitignore')))) {\n await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);\n }\n\n // Init git\n if (gitInit) {\n logger.title('git', 'Initializing git repository.');\n\n await tryGitInit(rootPath);\n\n logger.success('Initialized a git repository.');\n }\n\n if (shouldRunSeed) {\n if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {\n logger.title('Seed', 'Seeding your database with sample data');\n\n try {\n await execa(packageManager, ['run', 'seed:example'], {\n stdio: 'inherit',\n cwd: rootPath,\n });\n logger.success('Sample data added to your database');\n } catch (error) {\n logger.error('Failed to seed your database. Skipping');\n }\n }\n }\n\n const cmd = chalk.cyan(`${packageManager} run`);\n\n logger.title('Strapi', `Your application was created!`);\n\n logger.log([\n 'Available commands in your project:',\n '',\n 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',\n `${cmd} develop`,\n '',\n 'Start Strapi without watch mode.',\n `${cmd} start`,\n '',\n 'Build Strapi admin panel.',\n `${cmd} build`,\n '',\n 'Deploy Strapi project.',\n `${cmd} deploy`,\n '',\n ]);\n\n if (useExample) {\n logger.log(['Seed your database with sample data.', `${cmd} seed:example`, '']);\n }\n\n logger.log(['Display all available commands.', `${cmd} strapi\\n`]);\n\n if (installDependencies) {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n } else {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n `${chalk.cyan(packageManager)} install`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n }\n\n if (runApp && installDependencies) {\n logger.title('Run', 'Running your Strapi application');\n\n try {\n await trackUsage({ event: 'willStartServer', scope });\n\n await execa(packageManager, ['run', 'develop'], {\n stdio: 'inherit',\n cwd: rootPath,\n env: {\n FORCE_COLOR: '1',\n },\n });\n } catch (error) {\n if (typeof error === 'string' || error instanceof Error) {\n await trackUsage({\n event: 'didNotStartServer',\n scope,\n error,\n });\n }\n\n logger.fatal('Failed to start your Strapi application');\n }\n }\n}\n\nasync function runInstall({ rootPath, packageManager }: Scope) {\n // include same cwd and env to ensure version check returns same version we use below\n const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {\n cwd: rootPath,\n env: {\n ...process.env,\n NODE_ENV: 'development',\n },\n });\n\n const options: execa.Options = {\n cwd: rootPath,\n stdio: 'inherit',\n env: {\n ...process.env,\n ...envArgs,\n NODE_ENV: 'development',\n },\n };\n\n const proc = execa(packageManager, cmdArgs, options);\n\n return proc;\n}\n\nexport { createStrapi };\n"],"names":["createStrapi","scope","rootPath","fse","ensureDir","createApp","error","remove","useTypescript","useExample","installDependencies","isQuickstart","template","packageManager","gitInit","runApp","shouldRunSeed","trackUsage","event","logger","title","chalk","green","templateName","internalTemplatePath","join","__dirname","exists","copy","info","cyan","copyTemplate","success","Error","fatal","message","existsSync","bold","createPackageJSON","writeFile","generateDotEnv","err","runInstall","stderr","isStderrError","slice","gitIgnore","tryGitInit","execa","stdio","cwd","cmd","log","env","FORCE_COLOR","envArgs","cmdArgs","getInstallArgs","process","NODE_ENV","options","proc"],"mappings":"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"}