create-strapi-app 4.14.3 → 4.14.5
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/create-strapi-app.js +92 -86
- package/dist/create-strapi-app.js.map +1 -1
- package/dist/create-strapi-app.mjs +96 -0
- package/dist/create-strapi-app.mjs.map +1 -0
- package/package.json +14 -13
- package/dist/create-strapi-app.d.ts +0 -1
- package/dist/types.d.ts +0 -17
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/utils/prompt-user.d.ts +0 -7
- package/dist/utils/prompt-user.js +0 -35
- package/dist/utils/prompt-user.js.map +0 -1
|
@@ -1,94 +1,100 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
const node_fs = require("node:fs");
|
|
3
|
+
const node_path = require("node:path");
|
|
4
|
+
const commander = require("commander");
|
|
5
|
+
const generateNew = require("@strapi/generate-new");
|
|
6
|
+
const inquirer = require("inquirer");
|
|
7
|
+
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
8
|
+
const commander__default = /* @__PURE__ */ _interopDefault(commander);
|
|
9
|
+
const inquirer__default = /* @__PURE__ */ _interopDefault(inquirer);
|
|
10
|
+
async function promptUser(projectName, program, hasDatabaseOptions) {
|
|
11
|
+
return inquirer__default.default.prompt([
|
|
12
|
+
{
|
|
13
|
+
type: "input",
|
|
14
|
+
default: "my-strapi-project",
|
|
15
|
+
name: "directory",
|
|
16
|
+
message: "What would you like to name your project?",
|
|
17
|
+
when: !projectName
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: "list",
|
|
21
|
+
name: "quick",
|
|
22
|
+
message: "Choose your installation type",
|
|
23
|
+
when: !program.quickstart && !hasDatabaseOptions,
|
|
24
|
+
choices: [
|
|
25
|
+
{
|
|
26
|
+
name: "Quickstart (recommended)",
|
|
27
|
+
value: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "Custom (manual settings)",
|
|
31
|
+
value: false
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
const packageJson = JSON.parse(node_fs.readFileSync(node_path.resolve(__dirname, "../package.json"), "utf8"));
|
|
38
|
+
const command = new commander__default.default.Command(packageJson.name);
|
|
13
39
|
const databaseOptions = [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
40
|
+
"dbclient",
|
|
41
|
+
"dbhost",
|
|
42
|
+
"dbport",
|
|
43
|
+
"dbname",
|
|
44
|
+
"dbusername",
|
|
45
|
+
"dbpassword",
|
|
46
|
+
"dbssl",
|
|
47
|
+
"dbfile"
|
|
22
48
|
];
|
|
23
|
-
command
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
.option('--no-run', 'Do not start the application after it is created')
|
|
27
|
-
.option('--use-npm', 'Force usage of npm instead of yarn to create the project')
|
|
28
|
-
.option('--debug', 'Display database connection error')
|
|
29
|
-
.option('--quickstart', 'Quickstart app creation')
|
|
30
|
-
.option('--dbclient <dbclient>', 'Database client')
|
|
31
|
-
.option('--dbhost <dbhost>', 'Database host')
|
|
32
|
-
.option('--dbport <dbport>', 'Database port')
|
|
33
|
-
.option('--dbname <dbname>', 'Database name')
|
|
34
|
-
.option('--dbusername <dbusername>', 'Database username')
|
|
35
|
-
.option('--dbpassword <dbpassword>', 'Database password')
|
|
36
|
-
.option('--dbssl <dbssl>', 'Database SSL')
|
|
37
|
-
.option('--dbfile <dbfile>', 'Database file path for sqlite')
|
|
38
|
-
.option('--dbforce', 'Overwrite database content if any')
|
|
39
|
-
.option('--template <templateurl>', 'Specify a Strapi template')
|
|
40
|
-
.option('--ts, --typescript', 'Use TypeScript to generate the project')
|
|
41
|
-
.description('create a new application')
|
|
42
|
-
.action((directory, programArgs) => {
|
|
43
|
-
initProject(directory, programArgs);
|
|
44
|
-
})
|
|
45
|
-
.parse(process.argv);
|
|
49
|
+
command.version(packageJson.version).arguments("[directory]").option("--no-run", "Do not start the application after it is created").option("--use-npm", "Force usage of npm instead of yarn to create the project").option("--debug", "Display database connection error").option("--quickstart", "Quickstart app creation").option("--dbclient <dbclient>", "Database client").option("--dbhost <dbhost>", "Database host").option("--dbport <dbport>", "Database port").option("--dbname <dbname>", "Database name").option("--dbusername <dbusername>", "Database username").option("--dbpassword <dbpassword>", "Database password").option("--dbssl <dbssl>", "Database SSL").option("--dbfile <dbfile>", "Database file path for sqlite").option("--dbforce", "Overwrite database content if any").option("--template <templateurl>", "Specify a Strapi template").option("--ts, --typescript", "Use TypeScript to generate the project").description("create a new application").action((directory, programArgs) => {
|
|
50
|
+
initProject(directory, programArgs);
|
|
51
|
+
}).parse(process.argv);
|
|
46
52
|
function generateApp(projectName, options) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
if (!projectName) {
|
|
54
|
+
console.error("Please specify the <directory> of your project when using --quickstart");
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
return generateNew.generateNewApp(projectName, options).then(() => {
|
|
58
|
+
if (process.platform === "win32") {
|
|
59
|
+
process.exit(0);
|
|
50
60
|
}
|
|
51
|
-
|
|
52
|
-
if (process.platform === 'win32') {
|
|
53
|
-
process.exit(0);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
61
|
+
});
|
|
56
62
|
}
|
|
57
63
|
async function initProject(projectName, programArgs) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
64
|
+
if (projectName) {
|
|
65
|
+
await generateNew.checkInstallPath(node_path.resolve(projectName));
|
|
66
|
+
}
|
|
67
|
+
const programFlags = command.createHelp().visibleOptions(command).reduce((acc, { short, long }) => [...acc, short, long], []).filter(Boolean);
|
|
68
|
+
if (programArgs.template && programFlags.includes(programArgs.template)) {
|
|
69
|
+
console.error(`${programArgs.template} is not a valid template`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);
|
|
73
|
+
if (programArgs.quickstart && hasDatabaseOptions) {
|
|
74
|
+
console.error(
|
|
75
|
+
`The quickstart option is incompatible with the following options: ${databaseOptions.join(
|
|
76
|
+
", "
|
|
77
|
+
)}`
|
|
78
|
+
);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
if (hasDatabaseOptions) {
|
|
82
|
+
programArgs.quickstart = false;
|
|
83
|
+
}
|
|
84
|
+
if (programArgs.quickstart) {
|
|
85
|
+
return generateApp(projectName, programArgs);
|
|
86
|
+
}
|
|
87
|
+
const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);
|
|
88
|
+
const directory = prompt.directory || projectName;
|
|
89
|
+
await generateNew.checkInstallPath(node_path.resolve(directory));
|
|
90
|
+
const options = {
|
|
91
|
+
template: programArgs.template,
|
|
92
|
+
quickstart: prompt.quick || programArgs.quickstart
|
|
93
|
+
};
|
|
94
|
+
const generateStrapiAppOptions = {
|
|
95
|
+
...programArgs,
|
|
96
|
+
...options
|
|
97
|
+
};
|
|
98
|
+
return generateApp(directory, generateStrapiAppOptions);
|
|
93
99
|
}
|
|
94
|
-
//# sourceMappingURL=create-strapi-app.js.map
|
|
100
|
+
//# sourceMappingURL=create-strapi-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-strapi-app.js","
|
|
1
|
+
{"version":3,"file":"create-strapi-app.js","sources":["../src/utils/prompt-user.ts","../src/create-strapi-app.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Program } from '../types';\n\ninterface Answers {\n directory: string;\n quick: boolean;\n}\n\nexport default async function promptUser(\n projectName: string,\n program: Program,\n hasDatabaseOptions: boolean\n) {\n return inquirer.prompt<Answers>([\n {\n type: 'input',\n default: 'my-strapi-project',\n name: 'directory',\n message: 'What would you like to name your project?',\n when: !projectName,\n },\n {\n type: 'list',\n name: 'quick',\n message: 'Choose your installation type',\n when: !program.quickstart && !hasDatabaseOptions,\n choices: [\n {\n name: 'Quickstart (recommended)',\n value: true,\n },\n {\n name: 'Custom (manual settings)',\n value: false,\n },\n ],\n },\n ]);\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport commander from 'commander';\nimport { checkInstallPath, generateNewApp } from '@strapi/generate-new';\nimport promptUser from './utils/prompt-user';\nimport type { Program } from './types';\n\nconst packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));\n\nconst command = new commander.Command(packageJson.name);\n\nconst databaseOptions: Array<keyof Program> = [\n 'dbclient',\n 'dbhost',\n 'dbport',\n 'dbname',\n 'dbusername',\n 'dbpassword',\n 'dbssl',\n 'dbfile',\n];\n\ncommand\n .version(packageJson.version)\n .arguments('[directory]')\n .option('--no-run', 'Do not start the application after it is created')\n .option('--use-npm', 'Force usage of npm instead of yarn to create the project')\n .option('--debug', 'Display database connection error')\n .option('--quickstart', 'Quickstart app creation')\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--dbforce', 'Overwrite database content if any')\n .option('--template <templateurl>', 'Specify a Strapi template')\n .option('--ts, --typescript', 'Use TypeScript to generate the project')\n .description('create a new application')\n .action((directory, programArgs) => {\n initProject(directory, programArgs);\n })\n .parse(process.argv);\n\nfunction generateApp(projectName: string, options: unknown) {\n if (!projectName) {\n console.error('Please specify the <directory> of your project when using --quickstart');\n process.exit(1);\n }\n\n return generateNewApp(projectName, options).then(() => {\n if (process.platform === 'win32') {\n process.exit(0);\n }\n });\n}\n\nasync function initProject(projectName: string, programArgs: Program) {\n if (projectName) {\n await checkInstallPath(resolve(projectName));\n }\n\n const programFlags = command\n .createHelp()\n .visibleOptions(command)\n .reduce<Array<string | undefined>>((acc, { short, long }) => [...acc, short, long], [])\n .filter(Boolean);\n\n if (programArgs.template && programFlags.includes(programArgs.template)) {\n console.error(`${programArgs.template} is not a valid template`);\n process.exit(1);\n }\n\n const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);\n\n if (programArgs.quickstart && hasDatabaseOptions) {\n console.error(\n `The quickstart option is incompatible with the following options: ${databaseOptions.join(\n ', '\n )}`\n );\n process.exit(1);\n }\n\n if (hasDatabaseOptions) {\n programArgs.quickstart = false; // Will disable the quickstart question because != 'undefined'\n }\n\n if (programArgs.quickstart) {\n return generateApp(projectName, programArgs);\n }\n\n const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);\n const directory = prompt.directory || projectName;\n await checkInstallPath(resolve(directory));\n\n const options = {\n template: programArgs.template,\n quickstart: prompt.quick || programArgs.quickstart,\n };\n\n const generateStrapiAppOptions = {\n ...programArgs,\n ...options,\n };\n\n return generateApp(directory, generateStrapiAppOptions);\n}\n"],"names":["inquirer","readFileSync","resolve","commander","generateNewApp","checkInstallPath"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import commander from "commander";
|
|
4
|
+
import { checkInstallPath, generateNewApp } from "@strapi/generate-new";
|
|
5
|
+
import inquirer from "inquirer";
|
|
6
|
+
async function promptUser(projectName, program, hasDatabaseOptions) {
|
|
7
|
+
return inquirer.prompt([
|
|
8
|
+
{
|
|
9
|
+
type: "input",
|
|
10
|
+
default: "my-strapi-project",
|
|
11
|
+
name: "directory",
|
|
12
|
+
message: "What would you like to name your project?",
|
|
13
|
+
when: !projectName
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
type: "list",
|
|
17
|
+
name: "quick",
|
|
18
|
+
message: "Choose your installation type",
|
|
19
|
+
when: !program.quickstart && !hasDatabaseOptions,
|
|
20
|
+
choices: [
|
|
21
|
+
{
|
|
22
|
+
name: "Quickstart (recommended)",
|
|
23
|
+
value: true
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "Custom (manual settings)",
|
|
27
|
+
value: false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
const packageJson = JSON.parse(readFileSync(resolve(__dirname, "../package.json"), "utf8"));
|
|
34
|
+
const command = new commander.Command(packageJson.name);
|
|
35
|
+
const databaseOptions = [
|
|
36
|
+
"dbclient",
|
|
37
|
+
"dbhost",
|
|
38
|
+
"dbport",
|
|
39
|
+
"dbname",
|
|
40
|
+
"dbusername",
|
|
41
|
+
"dbpassword",
|
|
42
|
+
"dbssl",
|
|
43
|
+
"dbfile"
|
|
44
|
+
];
|
|
45
|
+
command.version(packageJson.version).arguments("[directory]").option("--no-run", "Do not start the application after it is created").option("--use-npm", "Force usage of npm instead of yarn to create the project").option("--debug", "Display database connection error").option("--quickstart", "Quickstart app creation").option("--dbclient <dbclient>", "Database client").option("--dbhost <dbhost>", "Database host").option("--dbport <dbport>", "Database port").option("--dbname <dbname>", "Database name").option("--dbusername <dbusername>", "Database username").option("--dbpassword <dbpassword>", "Database password").option("--dbssl <dbssl>", "Database SSL").option("--dbfile <dbfile>", "Database file path for sqlite").option("--dbforce", "Overwrite database content if any").option("--template <templateurl>", "Specify a Strapi template").option("--ts, --typescript", "Use TypeScript to generate the project").description("create a new application").action((directory, programArgs) => {
|
|
46
|
+
initProject(directory, programArgs);
|
|
47
|
+
}).parse(process.argv);
|
|
48
|
+
function generateApp(projectName, options) {
|
|
49
|
+
if (!projectName) {
|
|
50
|
+
console.error("Please specify the <directory> of your project when using --quickstart");
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
return generateNewApp(projectName, options).then(() => {
|
|
54
|
+
if (process.platform === "win32") {
|
|
55
|
+
process.exit(0);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async function initProject(projectName, programArgs) {
|
|
60
|
+
if (projectName) {
|
|
61
|
+
await checkInstallPath(resolve(projectName));
|
|
62
|
+
}
|
|
63
|
+
const programFlags = command.createHelp().visibleOptions(command).reduce((acc, { short, long }) => [...acc, short, long], []).filter(Boolean);
|
|
64
|
+
if (programArgs.template && programFlags.includes(programArgs.template)) {
|
|
65
|
+
console.error(`${programArgs.template} is not a valid template`);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);
|
|
69
|
+
if (programArgs.quickstart && hasDatabaseOptions) {
|
|
70
|
+
console.error(
|
|
71
|
+
`The quickstart option is incompatible with the following options: ${databaseOptions.join(
|
|
72
|
+
", "
|
|
73
|
+
)}`
|
|
74
|
+
);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
if (hasDatabaseOptions) {
|
|
78
|
+
programArgs.quickstart = false;
|
|
79
|
+
}
|
|
80
|
+
if (programArgs.quickstart) {
|
|
81
|
+
return generateApp(projectName, programArgs);
|
|
82
|
+
}
|
|
83
|
+
const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);
|
|
84
|
+
const directory = prompt.directory || projectName;
|
|
85
|
+
await checkInstallPath(resolve(directory));
|
|
86
|
+
const options = {
|
|
87
|
+
template: programArgs.template,
|
|
88
|
+
quickstart: prompt.quick || programArgs.quickstart
|
|
89
|
+
};
|
|
90
|
+
const generateStrapiAppOptions = {
|
|
91
|
+
...programArgs,
|
|
92
|
+
...options
|
|
93
|
+
};
|
|
94
|
+
return generateApp(directory, generateStrapiAppOptions);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=create-strapi-app.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-strapi-app.mjs","sources":["../src/utils/prompt-user.ts","../src/create-strapi-app.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Program } from '../types';\n\ninterface Answers {\n directory: string;\n quick: boolean;\n}\n\nexport default async function promptUser(\n projectName: string,\n program: Program,\n hasDatabaseOptions: boolean\n) {\n return inquirer.prompt<Answers>([\n {\n type: 'input',\n default: 'my-strapi-project',\n name: 'directory',\n message: 'What would you like to name your project?',\n when: !projectName,\n },\n {\n type: 'list',\n name: 'quick',\n message: 'Choose your installation type',\n when: !program.quickstart && !hasDatabaseOptions,\n choices: [\n {\n name: 'Quickstart (recommended)',\n value: true,\n },\n {\n name: 'Custom (manual settings)',\n value: false,\n },\n ],\n },\n ]);\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport commander from 'commander';\nimport { checkInstallPath, generateNewApp } from '@strapi/generate-new';\nimport promptUser from './utils/prompt-user';\nimport type { Program } from './types';\n\nconst packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));\n\nconst command = new commander.Command(packageJson.name);\n\nconst databaseOptions: Array<keyof Program> = [\n 'dbclient',\n 'dbhost',\n 'dbport',\n 'dbname',\n 'dbusername',\n 'dbpassword',\n 'dbssl',\n 'dbfile',\n];\n\ncommand\n .version(packageJson.version)\n .arguments('[directory]')\n .option('--no-run', 'Do not start the application after it is created')\n .option('--use-npm', 'Force usage of npm instead of yarn to create the project')\n .option('--debug', 'Display database connection error')\n .option('--quickstart', 'Quickstart app creation')\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--dbforce', 'Overwrite database content if any')\n .option('--template <templateurl>', 'Specify a Strapi template')\n .option('--ts, --typescript', 'Use TypeScript to generate the project')\n .description('create a new application')\n .action((directory, programArgs) => {\n initProject(directory, programArgs);\n })\n .parse(process.argv);\n\nfunction generateApp(projectName: string, options: unknown) {\n if (!projectName) {\n console.error('Please specify the <directory> of your project when using --quickstart');\n process.exit(1);\n }\n\n return generateNewApp(projectName, options).then(() => {\n if (process.platform === 'win32') {\n process.exit(0);\n }\n });\n}\n\nasync function initProject(projectName: string, programArgs: Program) {\n if (projectName) {\n await checkInstallPath(resolve(projectName));\n }\n\n const programFlags = command\n .createHelp()\n .visibleOptions(command)\n .reduce<Array<string | undefined>>((acc, { short, long }) => [...acc, short, long], [])\n .filter(Boolean);\n\n if (programArgs.template && programFlags.includes(programArgs.template)) {\n console.error(`${programArgs.template} is not a valid template`);\n process.exit(1);\n }\n\n const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);\n\n if (programArgs.quickstart && hasDatabaseOptions) {\n console.error(\n `The quickstart option is incompatible with the following options: ${databaseOptions.join(\n ', '\n )}`\n );\n process.exit(1);\n }\n\n if (hasDatabaseOptions) {\n programArgs.quickstart = false; // Will disable the quickstart question because != 'undefined'\n }\n\n if (programArgs.quickstart) {\n return generateApp(projectName, programArgs);\n }\n\n const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);\n const directory = prompt.directory || projectName;\n await checkInstallPath(resolve(directory));\n\n const options = {\n template: programArgs.template,\n quickstart: prompt.quick || programArgs.quickstart,\n };\n\n const generateStrapiAppOptions = {\n ...programArgs,\n ...options,\n };\n\n return generateApp(directory, generateStrapiAppOptions);\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-strapi-app",
|
|
3
|
-
"version": "4.14.
|
|
3
|
+
"version": "4.14.5",
|
|
4
4
|
"description": "Generate a new Strapi application.",
|
|
5
|
-
"dependencies": {
|
|
6
|
-
"@strapi/generate-new": "4.14.3",
|
|
7
|
-
"commander": "8.3.0",
|
|
8
|
-
"inquirer": "8.2.5"
|
|
9
|
-
},
|
|
10
5
|
"keywords": [
|
|
11
6
|
"create-strapi-app",
|
|
12
7
|
"create",
|
|
@@ -35,26 +30,32 @@
|
|
|
35
30
|
"url": "https://strapi.io"
|
|
36
31
|
}
|
|
37
32
|
],
|
|
33
|
+
"main": "",
|
|
38
34
|
"bin": "./bin/index.js",
|
|
39
35
|
"files": [
|
|
40
36
|
"./dist",
|
|
41
37
|
"./bin"
|
|
42
38
|
],
|
|
43
39
|
"scripts": {
|
|
44
|
-
"build": "
|
|
45
|
-
"build:ts": "run -T tsc",
|
|
46
|
-
"watch": "run -T tsc -w --preserveWatchOutput",
|
|
40
|
+
"build": "pack-up build",
|
|
47
41
|
"clean": "run -T rimraf ./dist",
|
|
42
|
+
"lint": "run -T eslint .",
|
|
48
43
|
"prepublishOnly": "yarn clean && yarn build",
|
|
49
|
-
"
|
|
44
|
+
"watch": "pack-up watch"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@strapi/generate-new": "4.14.5",
|
|
48
|
+
"commander": "8.3.0",
|
|
49
|
+
"inquirer": "8.2.5"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"
|
|
53
|
-
"
|
|
52
|
+
"@strapi/pack-up": "4.14.5",
|
|
53
|
+
"eslint-config-custom": "4.14.5",
|
|
54
|
+
"tsconfig": "4.14.5"
|
|
54
55
|
},
|
|
55
56
|
"engines": {
|
|
56
57
|
"node": ">=16.0.0 <=20.x.x",
|
|
57
58
|
"npm": ">=6.0.0"
|
|
58
59
|
},
|
|
59
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "a0400e4a0f47f8169b7ce31bc9087470c291209c"
|
|
60
61
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface Program {
|
|
2
|
-
noRun?: boolean;
|
|
3
|
-
useNpm?: boolean;
|
|
4
|
-
debug?: boolean;
|
|
5
|
-
quickstart?: boolean;
|
|
6
|
-
dbclient?: string;
|
|
7
|
-
dbhost?: string;
|
|
8
|
-
dbport?: string;
|
|
9
|
-
dbname?: string;
|
|
10
|
-
dbusername?: string;
|
|
11
|
-
dbpassword?: string;
|
|
12
|
-
dbssl?: string;
|
|
13
|
-
dbfile?: string;
|
|
14
|
-
dbforce?: boolean;
|
|
15
|
-
template?: string;
|
|
16
|
-
typescript?: boolean;
|
|
17
|
-
}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
7
|
-
async function promptUser(projectName, program, hasDatabaseOptions) {
|
|
8
|
-
return inquirer_1.default.prompt([
|
|
9
|
-
{
|
|
10
|
-
type: 'input',
|
|
11
|
-
default: 'my-strapi-project',
|
|
12
|
-
name: 'directory',
|
|
13
|
-
message: 'What would you like to name your project?',
|
|
14
|
-
when: !projectName,
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
type: 'list',
|
|
18
|
-
name: 'quick',
|
|
19
|
-
message: 'Choose your installation type',
|
|
20
|
-
when: !program.quickstart && !hasDatabaseOptions,
|
|
21
|
-
choices: [
|
|
22
|
-
{
|
|
23
|
-
name: 'Quickstart (recommended)',
|
|
24
|
-
value: true,
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: 'Custom (manual settings)',
|
|
28
|
-
value: false,
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
},
|
|
32
|
-
]);
|
|
33
|
-
}
|
|
34
|
-
exports.default = promptUser;
|
|
35
|
-
//# sourceMappingURL=prompt-user.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-user.js","sourceRoot":"","sources":["../../src/utils/prompt-user.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAQjB,KAAK,UAAU,UAAU,CACtC,WAAmB,EACnB,OAAgB,EAChB,kBAA2B;IAE3B,OAAO,kBAAQ,CAAC,MAAM,CAAU;QAC9B;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,mBAAmB;YAC5B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,2CAA2C;YACpD,IAAI,EAAE,CAAC,WAAW;SACnB;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,+BAA+B;YACxC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,kBAAkB;YAChD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,KAAK;iBACb;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AA9BD,6BA8BC"}
|