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.
- package/dist/cloud.js +65 -0
- package/dist/cloud.js.map +1 -0
- package/dist/cloud.mjs +63 -0
- package/dist/cloud.mjs.map +1 -0
- package/dist/create-strapi.js +251 -0
- package/dist/create-strapi.js.map +1 -0
- package/dist/create-strapi.mjs +249 -0
- package/dist/create-strapi.mjs.map +1 -0
- package/dist/index.js +35 -1330
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +15 -1291
- package/dist/index.mjs.map +1 -1
- package/dist/prompts.js +66 -0
- package/dist/prompts.js.map +1 -0
- package/dist/prompts.mjs +60 -0
- package/dist/prompts.mjs.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +6 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils/check-install-path.js +28 -0
- package/dist/utils/check-install-path.js.map +1 -0
- package/dist/utils/check-install-path.mjs +26 -0
- package/dist/utils/check-install-path.mjs.map +1 -0
- package/dist/utils/check-requirements.js +26 -0
- package/dist/utils/check-requirements.js.map +1 -0
- package/dist/utils/check-requirements.mjs +24 -0
- package/dist/utils/check-requirements.mjs.map +1 -0
- package/dist/utils/database.js +190 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/database.mjs +187 -0
- package/dist/utils/database.mjs.map +1 -0
- package/dist/utils/dot-env.js +46 -0
- package/dist/utils/dot-env.js.map +1 -0
- package/dist/utils/dot-env.mjs +44 -0
- package/dist/utils/dot-env.mjs.map +1 -0
- package/dist/utils/engines.js +9 -0
- package/dist/utils/engines.js.map +1 -0
- package/dist/utils/engines.mjs +7 -0
- package/dist/utils/engines.mjs.map +1 -0
- package/dist/utils/get-package-manager-args.js +135 -0
- package/dist/utils/get-package-manager-args.js.map +1 -0
- package/dist/utils/get-package-manager-args.mjs +132 -0
- package/dist/utils/get-package-manager-args.mjs.map +1 -0
- package/dist/utils/git.js +73 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/git.mjs +71 -0
- package/dist/utils/git.mjs.map +1 -0
- package/dist/utils/gitignore.js +139 -0
- package/dist/utils/gitignore.js.map +1 -0
- package/dist/utils/gitignore.mjs +137 -0
- package/dist/utils/gitignore.mjs.map +1 -0
- package/dist/utils/logger.js +54 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/logger.mjs +52 -0
- package/dist/utils/logger.mjs.map +1 -0
- package/dist/utils/machine-id.js +17 -0
- package/dist/utils/machine-id.js.map +1 -0
- package/dist/utils/machine-id.mjs +15 -0
- package/dist/utils/machine-id.mjs.map +1 -0
- package/dist/utils/package-json.js +32 -0
- package/dist/utils/package-json.js.map +1 -0
- package/dist/utils/package-json.mjs +30 -0
- package/dist/utils/package-json.mjs.map +1 -0
- package/dist/utils/parse-to-chalk.js +25 -0
- package/dist/utils/parse-to-chalk.js.map +1 -0
- package/dist/utils/parse-to-chalk.mjs +23 -0
- package/dist/utils/parse-to-chalk.mjs.map +1 -0
- package/dist/utils/template.js +180 -0
- package/dist/utils/template.js.map +1 -0
- package/dist/utils/template.mjs +159 -0
- package/dist/utils/template.mjs.map +1 -0
- package/dist/utils/usage.js +90 -0
- package/dist/utils/usage.js.map +1 -0
- package/dist/utils/usage.mjs +87 -0
- package/dist/utils/usage.mjs.map +1 -0
- package/package.json +4 -4
package/dist/cloud.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var inquirer = require('inquirer');
|
|
4
|
+
var cloudCli = require('@strapi/cloud-cli');
|
|
5
|
+
var parseToChalk = require('./utils/parse-to-chalk.js');
|
|
6
|
+
|
|
7
|
+
function assertCloudError(e) {
|
|
8
|
+
if (e.response === undefined) {
|
|
9
|
+
throw Error('Expected CloudError');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async function handleCloudLogin() {
|
|
13
|
+
const logger = cloudCli.services.createLogger({
|
|
14
|
+
silent: false,
|
|
15
|
+
debug: process.argv.includes('--debug'),
|
|
16
|
+
timestamp: false
|
|
17
|
+
});
|
|
18
|
+
const cloudApiService = await cloudCli.services.cloudApiFactory({
|
|
19
|
+
logger
|
|
20
|
+
});
|
|
21
|
+
const defaultErrorMessage = 'An error occurred while trying to interact with Strapi Cloud. Use strapi deploy command once the project is generated.';
|
|
22
|
+
try {
|
|
23
|
+
const { data: config } = await cloudApiService.config();
|
|
24
|
+
logger.log(parseToChalk(config.projectCreation.introText));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
logger.debug(e);
|
|
27
|
+
logger.error(defaultErrorMessage);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const { userChoice } = await inquirer.prompt([
|
|
31
|
+
{
|
|
32
|
+
type: 'list',
|
|
33
|
+
name: 'userChoice',
|
|
34
|
+
message: `Please log in or sign up.`,
|
|
35
|
+
choices: [
|
|
36
|
+
'Login/Sign up',
|
|
37
|
+
'Skip'
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
]);
|
|
41
|
+
if (userChoice !== 'Skip') {
|
|
42
|
+
const cliContext = {
|
|
43
|
+
logger,
|
|
44
|
+
cwd: process.cwd()
|
|
45
|
+
};
|
|
46
|
+
try {
|
|
47
|
+
await cloudCli.cli.login.action(cliContext);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
logger.debug(e);
|
|
50
|
+
try {
|
|
51
|
+
assertCloudError(e);
|
|
52
|
+
if (e.response.status === 403) {
|
|
53
|
+
const message = typeof e.response.data === 'string' ? e.response.data : 'We are sorry, but we are not able to log you into Strapi Cloud at the moment.';
|
|
54
|
+
logger.warn(message);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
} catch (e) {
|
|
58
|
+
/* empty */ }
|
|
59
|
+
logger.error(defaultErrorMessage);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
exports.handleCloudLogin = handleCloudLogin;
|
|
65
|
+
//# sourceMappingURL=cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.js","sources":["../src/cloud.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { cli as cloudCli, services as cloudServices } from '@strapi/cloud-cli';\nimport parseToChalk from './utils/parse-to-chalk';\n\ninterface CloudError {\n response: {\n status: number;\n data: string | object;\n };\n}\n\nfunction assertCloudError(e: unknown): asserts e is CloudError {\n if ((e as CloudError).response === undefined) {\n throw Error('Expected CloudError');\n }\n}\n\nexport async function handleCloudLogin(): Promise<void> {\n const logger = cloudServices.createLogger({\n silent: false,\n debug: process.argv.includes('--debug'),\n timestamp: false,\n });\n const cloudApiService = await cloudServices.cloudApiFactory({ logger });\n const defaultErrorMessage =\n 'An error occurred while trying to interact with Strapi Cloud. Use strapi deploy command once the project is generated.';\n\n try {\n const { data: config } = await cloudApiService.config();\n logger.log(parseToChalk(config.projectCreation.introText));\n } catch (e: unknown) {\n logger.debug(e);\n logger.error(defaultErrorMessage);\n return;\n }\n const { userChoice } = await inquirer.prompt<{ userChoice: string }>([\n {\n type: 'list',\n name: 'userChoice',\n message: `Please log in or sign up.`,\n choices: ['Login/Sign up', 'Skip'],\n },\n ]);\n\n if (userChoice !== 'Skip') {\n const cliContext = {\n logger,\n cwd: process.cwd(),\n };\n\n try {\n await cloudCli.login.action(cliContext);\n } catch (e: Error | CloudError | unknown) {\n logger.debug(e);\n try {\n assertCloudError(e);\n if (e.response.status === 403) {\n const message =\n typeof e.response.data === 'string'\n ? e.response.data\n : 'We are sorry, but we are not able to log you into Strapi Cloud at the moment.';\n logger.warn(message);\n return;\n }\n } catch (e) {\n /* empty */\n }\n logger.error(defaultErrorMessage);\n }\n }\n}\n"],"names":["assertCloudError","e","response","undefined","Error","handleCloudLogin","logger","cloudServices","createLogger","silent","debug","process","argv","includes","timestamp","cloudApiService","cloudApiFactory","defaultErrorMessage","data","config","log","parseToChalk","projectCreation","introText","error","userChoice","inquirer","prompt","type","name","message","choices","cliContext","cwd","cloudCli","login","action","status","warn"],"mappings":";;;;;;AAWA,SAASA,iBAAiBC,CAAU,EAAA;AAClC,IAAA,IAAI,CAACA,CAAiBC,QAAQ,KAAKC,SAAW,EAAA;AAC5C,QAAA,MAAMC,KAAM,CAAA,qBAAA,CAAA;AACd;AACF;AAEO,eAAeC,gBAAAA,GAAAA;IACpB,MAAMC,MAAAA,GAASC,iBAAcC,CAAAA,YAAY,CAAC;QACxCC,MAAQ,EAAA,KAAA;AACRC,QAAAA,KAAAA,EAAOC,OAAQC,CAAAA,IAAI,CAACC,QAAQ,CAAC,SAAA,CAAA;QAC7BC,SAAW,EAAA;AACb,KAAA,CAAA;AACA,IAAA,MAAMC,eAAkB,GAAA,MAAMR,iBAAcS,CAAAA,eAAe,CAAC;AAAEV,QAAAA;AAAO,KAAA,CAAA;AACrE,IAAA,MAAMW,mBACJ,GAAA,wHAAA;IAEF,IAAI;AACF,QAAA,MAAM,EAAEC,IAAMC,EAAAA,MAAM,EAAE,GAAG,MAAMJ,gBAAgBI,MAAM,EAAA;AACrDb,QAAAA,MAAAA,CAAOc,GAAG,CAACC,YAAAA,CAAaF,MAAOG,CAAAA,eAAe,CAACC,SAAS,CAAA,CAAA;AAC1D,KAAA,CAAE,OAAOtB,CAAY,EAAA;AACnBK,QAAAA,MAAAA,CAAOI,KAAK,CAACT,CAAAA,CAAAA;AACbK,QAAAA,MAAAA,CAAOkB,KAAK,CAACP,mBAAAA,CAAAA;AACb,QAAA;AACF;AACA,IAAA,MAAM,EAAEQ,UAAU,EAAE,GAAG,MAAMC,QAAAA,CAASC,MAAM,CAAyB;AACnE,QAAA;YACEC,IAAM,EAAA,MAAA;YACNC,IAAM,EAAA,YAAA;YACNC,OAAS,EAAA,CAAC,yBAAyB,CAAC;YACpCC,OAAS,EAAA;AAAC,gBAAA,eAAA;AAAiB,gBAAA;AAAO;AACpC;AACD,KAAA,CAAA;AAED,IAAA,IAAIN,eAAe,MAAQ,EAAA;AACzB,QAAA,MAAMO,UAAa,GAAA;AACjB1B,YAAAA,MAAAA;AACA2B,YAAAA,GAAAA,EAAKtB,QAAQsB,GAAG;AAClB,SAAA;QAEA,IAAI;AACF,YAAA,MAAMC,YAASC,CAAAA,KAAK,CAACC,MAAM,CAACJ,UAAAA,CAAAA;AAC9B,SAAA,CAAE,OAAO/B,CAAiC,EAAA;AACxCK,YAAAA,MAAAA,CAAOI,KAAK,CAACT,CAAAA,CAAAA;YACb,IAAI;gBACFD,gBAAiBC,CAAAA,CAAAA,CAAAA;AACjB,gBAAA,IAAIA,CAAEC,CAAAA,QAAQ,CAACmC,MAAM,KAAK,GAAK,EAAA;AAC7B,oBAAA,MAAMP,OACJ,GAAA,OAAO7B,CAAEC,CAAAA,QAAQ,CAACgB,IAAI,KAAK,QAAA,GACvBjB,CAAEC,CAAAA,QAAQ,CAACgB,IAAI,GACf,+EAAA;AACNZ,oBAAAA,MAAAA,CAAOgC,IAAI,CAACR,OAAAA,CAAAA;AACZ,oBAAA;AACF;AACF,aAAA,CAAE,OAAO7B,CAAG,EAAA;AACV;AAEFK,YAAAA,MAAAA,CAAOkB,KAAK,CAACP,mBAAAA,CAAAA;AACf;AACF;AACF;;;;"}
|
package/dist/cloud.mjs
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import { services, cli } from '@strapi/cloud-cli';
|
|
3
|
+
import parseToChalk from './utils/parse-to-chalk.mjs';
|
|
4
|
+
|
|
5
|
+
function assertCloudError(e) {
|
|
6
|
+
if (e.response === undefined) {
|
|
7
|
+
throw Error('Expected CloudError');
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
async function handleCloudLogin() {
|
|
11
|
+
const logger = services.createLogger({
|
|
12
|
+
silent: false,
|
|
13
|
+
debug: process.argv.includes('--debug'),
|
|
14
|
+
timestamp: false
|
|
15
|
+
});
|
|
16
|
+
const cloudApiService = await services.cloudApiFactory({
|
|
17
|
+
logger
|
|
18
|
+
});
|
|
19
|
+
const defaultErrorMessage = 'An error occurred while trying to interact with Strapi Cloud. Use strapi deploy command once the project is generated.';
|
|
20
|
+
try {
|
|
21
|
+
const { data: config } = await cloudApiService.config();
|
|
22
|
+
logger.log(parseToChalk(config.projectCreation.introText));
|
|
23
|
+
} catch (e) {
|
|
24
|
+
logger.debug(e);
|
|
25
|
+
logger.error(defaultErrorMessage);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const { userChoice } = await inquirer.prompt([
|
|
29
|
+
{
|
|
30
|
+
type: 'list',
|
|
31
|
+
name: 'userChoice',
|
|
32
|
+
message: `Please log in or sign up.`,
|
|
33
|
+
choices: [
|
|
34
|
+
'Login/Sign up',
|
|
35
|
+
'Skip'
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
]);
|
|
39
|
+
if (userChoice !== 'Skip') {
|
|
40
|
+
const cliContext = {
|
|
41
|
+
logger,
|
|
42
|
+
cwd: process.cwd()
|
|
43
|
+
};
|
|
44
|
+
try {
|
|
45
|
+
await cli.login.action(cliContext);
|
|
46
|
+
} catch (e) {
|
|
47
|
+
logger.debug(e);
|
|
48
|
+
try {
|
|
49
|
+
assertCloudError(e);
|
|
50
|
+
if (e.response.status === 403) {
|
|
51
|
+
const message = typeof e.response.data === 'string' ? e.response.data : 'We are sorry, but we are not able to log you into Strapi Cloud at the moment.';
|
|
52
|
+
logger.warn(message);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
} catch (e) {
|
|
56
|
+
/* empty */ }
|
|
57
|
+
logger.error(defaultErrorMessage);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { handleCloudLogin };
|
|
63
|
+
//# sourceMappingURL=cloud.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.mjs","sources":["../src/cloud.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { cli as cloudCli, services as cloudServices } from '@strapi/cloud-cli';\nimport parseToChalk from './utils/parse-to-chalk';\n\ninterface CloudError {\n response: {\n status: number;\n data: string | object;\n };\n}\n\nfunction assertCloudError(e: unknown): asserts e is CloudError {\n if ((e as CloudError).response === undefined) {\n throw Error('Expected CloudError');\n }\n}\n\nexport async function handleCloudLogin(): Promise<void> {\n const logger = cloudServices.createLogger({\n silent: false,\n debug: process.argv.includes('--debug'),\n timestamp: false,\n });\n const cloudApiService = await cloudServices.cloudApiFactory({ logger });\n const defaultErrorMessage =\n 'An error occurred while trying to interact with Strapi Cloud. Use strapi deploy command once the project is generated.';\n\n try {\n const { data: config } = await cloudApiService.config();\n logger.log(parseToChalk(config.projectCreation.introText));\n } catch (e: unknown) {\n logger.debug(e);\n logger.error(defaultErrorMessage);\n return;\n }\n const { userChoice } = await inquirer.prompt<{ userChoice: string }>([\n {\n type: 'list',\n name: 'userChoice',\n message: `Please log in or sign up.`,\n choices: ['Login/Sign up', 'Skip'],\n },\n ]);\n\n if (userChoice !== 'Skip') {\n const cliContext = {\n logger,\n cwd: process.cwd(),\n };\n\n try {\n await cloudCli.login.action(cliContext);\n } catch (e: Error | CloudError | unknown) {\n logger.debug(e);\n try {\n assertCloudError(e);\n if (e.response.status === 403) {\n const message =\n typeof e.response.data === 'string'\n ? e.response.data\n : 'We are sorry, but we are not able to log you into Strapi Cloud at the moment.';\n logger.warn(message);\n return;\n }\n } catch (e) {\n /* empty */\n }\n logger.error(defaultErrorMessage);\n }\n }\n}\n"],"names":["assertCloudError","e","response","undefined","Error","handleCloudLogin","logger","cloudServices","createLogger","silent","debug","process","argv","includes","timestamp","cloudApiService","cloudApiFactory","defaultErrorMessage","data","config","log","parseToChalk","projectCreation","introText","error","userChoice","inquirer","prompt","type","name","message","choices","cliContext","cwd","cloudCli","login","action","status","warn"],"mappings":";;;;AAWA,SAASA,iBAAiBC,CAAU,EAAA;AAClC,IAAA,IAAI,CAACA,CAAiBC,QAAQ,KAAKC,SAAW,EAAA;AAC5C,QAAA,MAAMC,KAAM,CAAA,qBAAA,CAAA;AACd;AACF;AAEO,eAAeC,gBAAAA,GAAAA;IACpB,MAAMC,MAAAA,GAASC,QAAcC,CAAAA,YAAY,CAAC;QACxCC,MAAQ,EAAA,KAAA;AACRC,QAAAA,KAAAA,EAAOC,OAAQC,CAAAA,IAAI,CAACC,QAAQ,CAAC,SAAA,CAAA;QAC7BC,SAAW,EAAA;AACb,KAAA,CAAA;AACA,IAAA,MAAMC,eAAkB,GAAA,MAAMR,QAAcS,CAAAA,eAAe,CAAC;AAAEV,QAAAA;AAAO,KAAA,CAAA;AACrE,IAAA,MAAMW,mBACJ,GAAA,wHAAA;IAEF,IAAI;AACF,QAAA,MAAM,EAAEC,IAAMC,EAAAA,MAAM,EAAE,GAAG,MAAMJ,gBAAgBI,MAAM,EAAA;AACrDb,QAAAA,MAAAA,CAAOc,GAAG,CAACC,YAAAA,CAAaF,MAAOG,CAAAA,eAAe,CAACC,SAAS,CAAA,CAAA;AAC1D,KAAA,CAAE,OAAOtB,CAAY,EAAA;AACnBK,QAAAA,MAAAA,CAAOI,KAAK,CAACT,CAAAA,CAAAA;AACbK,QAAAA,MAAAA,CAAOkB,KAAK,CAACP,mBAAAA,CAAAA;AACb,QAAA;AACF;AACA,IAAA,MAAM,EAAEQ,UAAU,EAAE,GAAG,MAAMC,QAAAA,CAASC,MAAM,CAAyB;AACnE,QAAA;YACEC,IAAM,EAAA,MAAA;YACNC,IAAM,EAAA,YAAA;YACNC,OAAS,EAAA,CAAC,yBAAyB,CAAC;YACpCC,OAAS,EAAA;AAAC,gBAAA,eAAA;AAAiB,gBAAA;AAAO;AACpC;AACD,KAAA,CAAA;AAED,IAAA,IAAIN,eAAe,MAAQ,EAAA;AACzB,QAAA,MAAMO,UAAa,GAAA;AACjB1B,YAAAA,MAAAA;AACA2B,YAAAA,GAAAA,EAAKtB,QAAQsB,GAAG;AAClB,SAAA;QAEA,IAAI;AACF,YAAA,MAAMC,GAASC,CAAAA,KAAK,CAACC,MAAM,CAACJ,UAAAA,CAAAA;AAC9B,SAAA,CAAE,OAAO/B,CAAiC,EAAA;AACxCK,YAAAA,MAAAA,CAAOI,KAAK,CAACT,CAAAA,CAAAA;YACb,IAAI;gBACFD,gBAAiBC,CAAAA,CAAAA,CAAAA;AACjB,gBAAA,IAAIA,CAAEC,CAAAA,QAAQ,CAACmC,MAAM,KAAK,GAAK,EAAA;AAC7B,oBAAA,MAAMP,OACJ,GAAA,OAAO7B,CAAEC,CAAAA,QAAQ,CAACgB,IAAI,KAAK,QAAA,GACvBjB,CAAEC,CAAAA,QAAQ,CAACgB,IAAI,GACf,+EAAA;AACNZ,oBAAAA,MAAAA,CAAOgC,IAAI,CAACR,OAAAA,CAAAA;AACZ,oBAAA;AACF;AACF,aAAA,CAAE,OAAO7B,CAAG,EAAA;AACV;AAEFK,YAAAA,MAAAA,CAAOkB,KAAK,CAACP,mBAAAA,CAAAA;AACf;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var path = require('node:path');
|
|
4
|
+
var chalk = require('chalk');
|
|
5
|
+
var execa = require('execa');
|
|
6
|
+
var fse = require('fs-extra');
|
|
7
|
+
var template = require('./utils/template.js');
|
|
8
|
+
var git = require('./utils/git.js');
|
|
9
|
+
var usage = require('./utils/usage.js');
|
|
10
|
+
var packageJson = require('./utils/package-json.js');
|
|
11
|
+
var dotEnv = require('./utils/dot-env.js');
|
|
12
|
+
var types = require('./types.js');
|
|
13
|
+
var logger = require('./utils/logger.js');
|
|
14
|
+
var gitignore = require('./utils/gitignore.js');
|
|
15
|
+
var getPackageManagerArgs = require('./utils/get-package-manager-args.js');
|
|
16
|
+
|
|
17
|
+
async function createStrapi(scope) {
|
|
18
|
+
const { rootPath } = scope;
|
|
19
|
+
try {
|
|
20
|
+
await fse.ensureDir(rootPath);
|
|
21
|
+
await createApp(scope);
|
|
22
|
+
} catch (error) {
|
|
23
|
+
await fse.remove(rootPath);
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function createApp(scope) {
|
|
28
|
+
const { rootPath, useTypescript, useExample, installDependencies, isQuickstart, template: template$1, packageManager, gitInit, runApp } = scope;
|
|
29
|
+
const shouldRunSeed = useExample && installDependencies;
|
|
30
|
+
await usage.trackUsage({
|
|
31
|
+
event: 'willCreateProject',
|
|
32
|
+
scope
|
|
33
|
+
});
|
|
34
|
+
logger.logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);
|
|
35
|
+
if (!isQuickstart) {
|
|
36
|
+
await usage.trackUsage({
|
|
37
|
+
event: 'didChooseCustomDatabase',
|
|
38
|
+
scope
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
await usage.trackUsage({
|
|
42
|
+
event: 'didChooseQuickstart',
|
|
43
|
+
scope
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (!template$1) {
|
|
47
|
+
let templateName = useExample ? 'example' : 'vanilla';
|
|
48
|
+
if (!useTypescript) {
|
|
49
|
+
templateName = `${templateName}-js`;
|
|
50
|
+
}
|
|
51
|
+
const internalTemplatePath = path.join(__dirname, '../templates', templateName);
|
|
52
|
+
if (await fse.exists(internalTemplatePath)) {
|
|
53
|
+
await fse.copy(internalTemplatePath, rootPath);
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
try {
|
|
57
|
+
logger.logger.info(`${chalk.cyan('Installing template')} ${template$1}`);
|
|
58
|
+
await template.copyTemplate(scope, rootPath);
|
|
59
|
+
logger.logger.success('Template copied successfully.');
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (error instanceof Error) {
|
|
62
|
+
logger.logger.fatal(`Template installation failed: ${error.message}`);
|
|
63
|
+
}
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
if (!fse.existsSync(path.join(rootPath, 'package.json'))) {
|
|
67
|
+
logger.logger.fatal(`Missing ${chalk.bold('package.json')} in template`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
await usage.trackUsage({
|
|
71
|
+
event: 'didCopyProjectFiles',
|
|
72
|
+
scope
|
|
73
|
+
});
|
|
74
|
+
try {
|
|
75
|
+
await packageJson.createPackageJSON(scope);
|
|
76
|
+
await usage.trackUsage({
|
|
77
|
+
event: 'didWritePackageJSON',
|
|
78
|
+
scope
|
|
79
|
+
});
|
|
80
|
+
// ensure node_modules is created
|
|
81
|
+
await fse.ensureDir(path.join(rootPath, 'node_modules'));
|
|
82
|
+
// create config/database
|
|
83
|
+
await fse.writeFile(path.join(rootPath, '.env'), dotEnv.generateDotEnv(scope));
|
|
84
|
+
await usage.trackUsage({
|
|
85
|
+
event: 'didCopyConfigurationFiles',
|
|
86
|
+
scope
|
|
87
|
+
});
|
|
88
|
+
} catch (err) {
|
|
89
|
+
await fse.remove(rootPath);
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
if (installDependencies) {
|
|
93
|
+
try {
|
|
94
|
+
logger.logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);
|
|
95
|
+
await usage.trackUsage({
|
|
96
|
+
event: 'willInstallProjectDependencies',
|
|
97
|
+
scope
|
|
98
|
+
});
|
|
99
|
+
await runInstall(scope);
|
|
100
|
+
await usage.trackUsage({
|
|
101
|
+
event: 'didInstallProjectDependencies',
|
|
102
|
+
scope
|
|
103
|
+
});
|
|
104
|
+
logger.logger.success(`Dependencies installed`);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
const stderr = types.isStderrError(error) ? error.stderr : '';
|
|
107
|
+
await usage.trackUsage({
|
|
108
|
+
event: 'didNotInstallProjectDependencies',
|
|
109
|
+
scope,
|
|
110
|
+
error: stderr.slice(-1024)
|
|
111
|
+
});
|
|
112
|
+
logger.logger.fatal([
|
|
113
|
+
chalk.bold('Oh, it seems that you encountered an error while installing dependencies in your project'),
|
|
114
|
+
'',
|
|
115
|
+
`Don't give up, your project was created correctly`,
|
|
116
|
+
'',
|
|
117
|
+
`Fix the issues mentioned in the installation errors and try to run the following command:`,
|
|
118
|
+
'',
|
|
119
|
+
`cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
await usage.trackUsage({
|
|
124
|
+
event: 'didCreateProject',
|
|
125
|
+
scope
|
|
126
|
+
});
|
|
127
|
+
// make sure a gitignore file is created regardless of the user using git or not
|
|
128
|
+
if (!await fse.exists(path.join(rootPath, '.gitignore'))) {
|
|
129
|
+
await fse.writeFile(path.join(rootPath, '.gitignore'), gitignore.gitIgnore);
|
|
130
|
+
}
|
|
131
|
+
// Init git
|
|
132
|
+
if (gitInit) {
|
|
133
|
+
logger.logger.title('git', 'Initializing git repository.');
|
|
134
|
+
await git.tryGitInit(rootPath);
|
|
135
|
+
logger.logger.success('Initialized a git repository.');
|
|
136
|
+
}
|
|
137
|
+
if (shouldRunSeed) {
|
|
138
|
+
if (await fse.exists(path.join(rootPath, 'scripts/seed.js'))) {
|
|
139
|
+
logger.logger.title('Seed', 'Seeding your database with sample data');
|
|
140
|
+
try {
|
|
141
|
+
await execa(packageManager, [
|
|
142
|
+
'run',
|
|
143
|
+
'seed:example'
|
|
144
|
+
], {
|
|
145
|
+
stdio: 'inherit',
|
|
146
|
+
cwd: rootPath
|
|
147
|
+
});
|
|
148
|
+
logger.logger.success('Sample data added to your database');
|
|
149
|
+
} catch (error) {
|
|
150
|
+
logger.logger.error('Failed to seed your database. Skipping');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const cmd = chalk.cyan(`${packageManager} run`);
|
|
155
|
+
logger.logger.title('Strapi', `Your application was created!`);
|
|
156
|
+
logger.logger.log([
|
|
157
|
+
'Available commands in your project:',
|
|
158
|
+
'',
|
|
159
|
+
'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',
|
|
160
|
+
`${cmd} develop`,
|
|
161
|
+
'',
|
|
162
|
+
'Start Strapi without watch mode.',
|
|
163
|
+
`${cmd} start`,
|
|
164
|
+
'',
|
|
165
|
+
'Build Strapi admin panel.',
|
|
166
|
+
`${cmd} build`,
|
|
167
|
+
'',
|
|
168
|
+
'Deploy Strapi project.',
|
|
169
|
+
`${cmd} deploy`,
|
|
170
|
+
''
|
|
171
|
+
]);
|
|
172
|
+
if (useExample) {
|
|
173
|
+
logger.logger.log([
|
|
174
|
+
'Seed your database with sample data.',
|
|
175
|
+
`${cmd} seed:example`,
|
|
176
|
+
''
|
|
177
|
+
]);
|
|
178
|
+
}
|
|
179
|
+
logger.logger.log([
|
|
180
|
+
'Display all available commands.',
|
|
181
|
+
`${cmd} strapi\n`
|
|
182
|
+
]);
|
|
183
|
+
if (installDependencies) {
|
|
184
|
+
logger.logger.log([
|
|
185
|
+
'To get started run',
|
|
186
|
+
'',
|
|
187
|
+
`${chalk.cyan('cd')} ${rootPath}`,
|
|
188
|
+
!shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`
|
|
189
|
+
]);
|
|
190
|
+
} else {
|
|
191
|
+
logger.logger.log([
|
|
192
|
+
'To get started run',
|
|
193
|
+
'',
|
|
194
|
+
`${chalk.cyan('cd')} ${rootPath}`,
|
|
195
|
+
`${chalk.cyan(packageManager)} install`,
|
|
196
|
+
!shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`
|
|
197
|
+
]);
|
|
198
|
+
}
|
|
199
|
+
if (runApp && installDependencies) {
|
|
200
|
+
logger.logger.title('Run', 'Running your Strapi application');
|
|
201
|
+
try {
|
|
202
|
+
await usage.trackUsage({
|
|
203
|
+
event: 'willStartServer',
|
|
204
|
+
scope
|
|
205
|
+
});
|
|
206
|
+
await execa(packageManager, [
|
|
207
|
+
'run',
|
|
208
|
+
'develop'
|
|
209
|
+
], {
|
|
210
|
+
stdio: 'inherit',
|
|
211
|
+
cwd: rootPath,
|
|
212
|
+
env: {
|
|
213
|
+
FORCE_COLOR: '1'
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
} catch (error) {
|
|
217
|
+
if (typeof error === 'string' || error instanceof Error) {
|
|
218
|
+
await usage.trackUsage({
|
|
219
|
+
event: 'didNotStartServer',
|
|
220
|
+
scope,
|
|
221
|
+
error
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
logger.logger.fatal('Failed to start your Strapi application');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
async function runInstall({ rootPath, packageManager }) {
|
|
229
|
+
// include same cwd and env to ensure version check returns same version we use below
|
|
230
|
+
const { envArgs, cmdArgs } = await getPackageManagerArgs.getInstallArgs(packageManager, {
|
|
231
|
+
cwd: rootPath,
|
|
232
|
+
env: {
|
|
233
|
+
...process.env,
|
|
234
|
+
NODE_ENV: 'development'
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
const options = {
|
|
238
|
+
cwd: rootPath,
|
|
239
|
+
stdio: 'inherit',
|
|
240
|
+
env: {
|
|
241
|
+
...process.env,
|
|
242
|
+
...envArgs,
|
|
243
|
+
NODE_ENV: 'development'
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
const proc = execa(packageManager, cmdArgs, options);
|
|
247
|
+
return proc;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
exports.createStrapi = createStrapi;
|
|
251
|
+
//# sourceMappingURL=create-strapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-strapi.js","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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"}
|