create-payload-app 0.1.22 → 0.3.3
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/README.md +1 -1
- package/bin/cli.js +1 -52
- package/dist/index.js +67 -0
- package/dist/lib/createProject.js +204 -0
- package/dist/lib/createProject.test.js +101 -0
- package/dist/lib/getDatabaseConnection.js +71 -0
- package/dist/lib/getPayloadSecret.js +69 -0
- package/dist/lib/github.js +130 -0
- package/dist/lib/parseLanguage.js +79 -0
- package/dist/lib/parseProjectName.js +71 -0
- package/dist/lib/parseTemplate.js +88 -0
- package/dist/lib/templates.js +83 -0
- package/dist/lib/writeEnvFile.js +73 -0
- package/dist/main.js +177 -0
- package/{templates → dist/templates}/js-blank/collections/Examples.js +0 -0
- package/{templates → dist/templates}/js-blank/collections/Users.js +0 -0
- package/{templates → dist/templates}/js-blank/nodemon.json +0 -0
- package/{templates → dist/templates}/js-blank/package.json +1 -1
- package/{templates → dist/templates}/js-blank/payload.config.js +0 -0
- package/{templates/js-todo → dist/templates/js-blank}/server.js +5 -0
- package/{templates → dist/templates}/js-blog/collections/Categories.js +0 -0
- package/{templates → dist/templates}/js-blog/collections/Posts.js +0 -0
- package/{templates → dist/templates}/js-blog/collections/Tags.js +0 -0
- package/{templates → dist/templates}/js-blog/collections/Users.js +0 -0
- package/{templates → dist/templates}/js-blog/nodemon.json +0 -0
- package/{templates → dist/templates}/js-blog/package.json +1 -1
- package/{templates → dist/templates}/js-blog/payload.config.js +0 -0
- package/{templates/js-blank → dist/templates/js-blog}/server.js +5 -0
- package/{templates → dist/templates}/js-todo/collections/TodoLists.js +0 -0
- package/{templates → dist/templates}/js-todo/collections/Users.js +0 -0
- package/{templates → dist/templates}/js-todo/nodemon.json +0 -0
- package/{templates → dist/templates}/js-todo/package.json +1 -1
- package/{templates → dist/templates}/js-todo/payload.config.js +0 -0
- package/{templates/js-blog → dist/templates/js-todo}/server.js +5 -0
- package/{templates → dist/templates}/ts-blank/nodemon.json +0 -0
- package/{templates → dist/templates}/ts-blank/package.json +3 -2
- package/{templates → dist/templates}/ts-blank/src/collections/Examples.ts +0 -0
- package/{templates → dist/templates}/ts-blank/src/collections/Users.ts +0 -0
- package/{templates → dist/templates}/ts-blank/src/payload.config.ts +4 -0
- package/{templates/ts-blog → dist/templates/ts-blank}/src/server.ts +5 -0
- package/{templates → dist/templates}/ts-blank/tsconfig.json +0 -0
- package/{templates → dist/templates}/ts-blog/nodemon.json +0 -0
- package/{templates → dist/templates}/ts-blog/package.json +3 -2
- package/{templates → dist/templates}/ts-blog/src/collections/Categories.ts +0 -0
- package/{templates → dist/templates}/ts-blog/src/collections/Posts.ts +0 -0
- package/{templates → dist/templates}/ts-blog/src/collections/Tags.ts +0 -0
- package/{templates → dist/templates}/ts-blog/src/collections/Users.ts +0 -0
- package/{templates → dist/templates}/ts-blog/src/payload.config.ts +4 -0
- package/{templates/ts-blank → dist/templates/ts-blog}/src/server.ts +5 -0
- package/{templates → dist/templates}/ts-blog/tsconfig.json +0 -0
- package/{templates → dist/templates}/ts-todo/nodemon.json +0 -0
- package/{templates → dist/templates}/ts-todo/package.json +3 -2
- package/{templates → dist/templates}/ts-todo/src/collections/TodoLists.ts +0 -0
- package/{templates → dist/templates}/ts-todo/src/collections/Users.ts +0 -0
- package/{templates → dist/templates}/ts-todo/src/payload.config.ts +4 -0
- package/{templates → dist/templates}/ts-todo/src/server.ts +5 -0
- package/{templates → dist/templates}/ts-todo/tsconfig.json +0 -0
- package/dist/types.js +2 -0
- package/dist/utils/log.js +24 -0
- package/dist/utils/messages.js +73 -0
- package/dist/utils/usage.js +63 -0
- package/package.json +31 -4
- package/utils/createProject.js +0 -101
- package/utils/getArgs.js +0 -28
- package/utils/getDatabaseConnection.js +0 -37
- package/utils/getLanguage.js +0 -43
- package/utils/getPackageManager.js +0 -27
- package/utils/getPayloadSecret.js +0 -34
- package/utils/getProjectDir.js +0 -8
- package/utils/getProjectName.js +0 -39
- package/utils/getTemplate.js +0 -49
- package/utils/getValidTemplates.js +0 -29
- package/utils/log.js +0 -27
- package/utils/messages.js +0 -51
- package/utils/usage.js +0 -35
- package/utils/writeEnvFile.js +0 -25
package/package.json
CHANGED
@@ -4,11 +4,18 @@
|
|
4
4
|
"bin": {
|
5
5
|
"create-payload-app": "bin/cli.js"
|
6
6
|
},
|
7
|
+
"scripts": {
|
8
|
+
"build": "tsc && yarn copyfiles",
|
9
|
+
"copyfiles": "copyfiles -u 1 \"src/templates/**\" dist",
|
10
|
+
"typecheck": "tsc --noEmit",
|
11
|
+
"lint": "eslint \"src/**/*.ts\"",
|
12
|
+
"test": "jest",
|
13
|
+
"prepublish": "yarn test && yarn build"
|
14
|
+
},
|
7
15
|
"files": [
|
8
16
|
"package.json",
|
9
|
-
"
|
10
|
-
"
|
11
|
-
"templates"
|
17
|
+
"dist",
|
18
|
+
"bin"
|
12
19
|
],
|
13
20
|
"dependencies": {
|
14
21
|
"@sentry/node": "^6.3.3",
|
@@ -16,6 +23,7 @@
|
|
16
23
|
"arg": "^5.0.0",
|
17
24
|
"chalk": "^4.1.0",
|
18
25
|
"command-exists": "^1.2.9",
|
26
|
+
"degit": "^2.8.4",
|
19
27
|
"execa": "^5.0.0",
|
20
28
|
"figures": "^3.2.0",
|
21
29
|
"fs-extra": "^9.0.1",
|
@@ -23,5 +31,24 @@
|
|
23
31
|
"prompts": "^2.4.0",
|
24
32
|
"terminal-link": "^2.1.1"
|
25
33
|
},
|
26
|
-
"version": "0.
|
34
|
+
"version": "0.3.3",
|
35
|
+
"devDependencies": {
|
36
|
+
"@types/command-exists": "^1.2.0",
|
37
|
+
"@types/degit": "^2.8.3",
|
38
|
+
"@types/fs-extra": "^9.0.12",
|
39
|
+
"@types/jest": "^27.0.3",
|
40
|
+
"@types/node": "^16.6.2",
|
41
|
+
"@types/prompts": "^2.4.0",
|
42
|
+
"@typescript-eslint/eslint-plugin": "^4.29.2",
|
43
|
+
"@typescript-eslint/parser": "^4.29.2",
|
44
|
+
"copyfiles": "^2.4.1",
|
45
|
+
"eslint": "^7.32.0",
|
46
|
+
"eslint-config-airbnb-base": "^14.2.1",
|
47
|
+
"eslint-config-prettier": "^8.3.0",
|
48
|
+
"eslint-plugin-prettier": "^3.4.0",
|
49
|
+
"jest": "^27.4.5",
|
50
|
+
"prettier": "^2.3.2",
|
51
|
+
"ts-jest": "^27.1.1",
|
52
|
+
"typescript": "^4.3.5"
|
53
|
+
}
|
27
54
|
}
|
package/utils/createProject.js
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
const path = require('path');
|
2
|
-
const chalk = require('chalk');
|
3
|
-
const fse = require('fs-extra');
|
4
|
-
const execa = require('execa');
|
5
|
-
const ora = require('ora');
|
6
|
-
const { getArgs } = require('./getArgs');
|
7
|
-
|
8
|
-
const { getProjectDir } = require('./getProjectDir');
|
9
|
-
const { getTemplate } = require('./getTemplate');
|
10
|
-
const { success, error, warning } = require('./log');
|
11
|
-
const { getPackageManager } = require('./getPackageManager');
|
12
|
-
const { setTags } = require('./usage');
|
13
|
-
|
14
|
-
const createProjectDir = (projectDir) => {
|
15
|
-
fse.mkdirpSync(projectDir);
|
16
|
-
const readDir = fse.readdirSync(projectDir);
|
17
|
-
if (readDir && readDir.length > 0) {
|
18
|
-
error(`The project directory '${projectDir}' is not empty`);
|
19
|
-
process.exit(1);
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
const installDeps = async (dir, packageManager) => {
|
24
|
-
const args = getArgs();
|
25
|
-
if (args['--no-deps']) {
|
26
|
-
return { failed: false };
|
27
|
-
}
|
28
|
-
let cmd = packageManager === 'yarn' ? 'yarn' : 'npm install --legacy-peer-deps';
|
29
|
-
|
30
|
-
let result = false;
|
31
|
-
try {
|
32
|
-
result = execa.command(cmd, {
|
33
|
-
cwd: path.resolve(dir),
|
34
|
-
});
|
35
|
-
} catch (error) {
|
36
|
-
result = error;
|
37
|
-
}
|
38
|
-
return result;
|
39
|
-
};
|
40
|
-
|
41
|
-
const getLatestPayloadVersion = async () => {
|
42
|
-
let result = false;
|
43
|
-
try {
|
44
|
-
const { stdout } = await execa('npm info payload version', [], { shell: true });
|
45
|
-
return `^${stdout}`;
|
46
|
-
} catch (error) {
|
47
|
-
result = error;
|
48
|
-
}
|
49
|
-
return result;
|
50
|
-
}
|
51
|
-
|
52
|
-
const updatePayloadVersion = async (projectDir) => {
|
53
|
-
const payloadVersion = await getLatestPayloadVersion();
|
54
|
-
if (payloadVersion.failed) {
|
55
|
-
warning('Error retrieving latest Payload version. Please update your package.json manually.');
|
56
|
-
return;
|
57
|
-
}
|
58
|
-
setTags({ payload_version: payloadVersion });
|
59
|
-
|
60
|
-
const pjson = path.resolve(projectDir, 'package.json');
|
61
|
-
try {
|
62
|
-
const packageObj = await fse.readJson(pjson);
|
63
|
-
packageObj.dependencies.payload = payloadVersion;
|
64
|
-
await fse.writeJson(pjson, packageObj, { spaces: 2 });
|
65
|
-
} catch (err) {
|
66
|
-
warning('Unable to write Payload version to package.json. Please update your package.json manually.');
|
67
|
-
}
|
68
|
-
}
|
69
|
-
|
70
|
-
const createProject = async () => {
|
71
|
-
const projectDir = await getProjectDir();
|
72
|
-
createProjectDir(projectDir);
|
73
|
-
const templateDir = path.resolve(__dirname, `../templates/${await getTemplate()}`);
|
74
|
-
|
75
|
-
console.log(`\n Creating a new Payload app in ${chalk.green(path.resolve(projectDir))}\n`)
|
76
|
-
|
77
|
-
try {
|
78
|
-
await fse.copy(templateDir, projectDir);
|
79
|
-
success('Project directory created')
|
80
|
-
} catch (err) {
|
81
|
-
const msg = 'Unable to copy template files. Please check template name or directory permissions.';
|
82
|
-
error(msg);
|
83
|
-
process.exit(1);
|
84
|
-
}
|
85
|
-
|
86
|
-
const spinner = ora('Checking latest Payload version...').start();
|
87
|
-
await updatePayloadVersion(projectDir);
|
88
|
-
|
89
|
-
const packageManager = await getPackageManager();
|
90
|
-
spinner.text = 'Installing dependencies...';
|
91
|
-
const result = await installDeps(projectDir, packageManager);
|
92
|
-
spinner.stop();
|
93
|
-
spinner.clear();
|
94
|
-
if (result.failed) {
|
95
|
-
error('Error installing dependencies');
|
96
|
-
} else {
|
97
|
-
success('Dependencies installed');
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
module.exports = { createProject };
|
package/utils/getArgs.js
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
const arg = require('arg');
|
2
|
-
|
3
|
-
let ARGS = false; // Store ARGS if they've been parsed before
|
4
|
-
const getArgs = () => {
|
5
|
-
// Already parsed
|
6
|
-
if (ARGS) {
|
7
|
-
return ARGS;
|
8
|
-
}
|
9
|
-
|
10
|
-
// Set to ARGS so only parsed once
|
11
|
-
ARGS = arg({
|
12
|
-
'--help': Boolean,
|
13
|
-
'--name': String,
|
14
|
-
'--template': String,
|
15
|
-
'--db': String,
|
16
|
-
'--secret': String,
|
17
|
-
'--use-npm': Boolean,
|
18
|
-
'--no-deps': Boolean,
|
19
|
-
'--dry-run': Boolean,
|
20
|
-
|
21
|
-
'-h': '--help',
|
22
|
-
'-n': '--name',
|
23
|
-
'-t': '--template',
|
24
|
-
}, { permissive: true });
|
25
|
-
return ARGS;
|
26
|
-
};
|
27
|
-
|
28
|
-
module.exports = { getArgs };
|
@@ -1,37 +0,0 @@
|
|
1
|
-
const prompts = require('prompts');
|
2
|
-
const slugify = require('@sindresorhus/slugify');
|
3
|
-
const { getArgs } = require('./getArgs');
|
4
|
-
const { getProjectName } = require('./getProjectName');
|
5
|
-
|
6
|
-
let MONGODB_URI;
|
7
|
-
const getDatabaseConnection = async () => {
|
8
|
-
if (MONGODB_URI) {
|
9
|
-
return MONGODB_URI;
|
10
|
-
}
|
11
|
-
|
12
|
-
const args = getArgs();
|
13
|
-
if (args['--db']) {
|
14
|
-
MONGODB_URI = args['--db'];
|
15
|
-
return MONGODB_URI;
|
16
|
-
}
|
17
|
-
|
18
|
-
const response = await prompts(
|
19
|
-
{
|
20
|
-
type: 'text',
|
21
|
-
name: 'value',
|
22
|
-
message: 'Enter MongoDB connection',
|
23
|
-
initial: `mongodb://localhost/${slugify(await getProjectName())}`,
|
24
|
-
validate: value => value.length,
|
25
|
-
},
|
26
|
-
{
|
27
|
-
onCancel: () => {
|
28
|
-
process.exit(0);
|
29
|
-
},
|
30
|
-
}
|
31
|
-
);
|
32
|
-
|
33
|
-
MONGODB_URI = response.value;
|
34
|
-
return MONGODB_URI;
|
35
|
-
};
|
36
|
-
|
37
|
-
module.exports = { getDatabaseConnection };
|
package/utils/getLanguage.js
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
const prompts = require('prompts');
|
2
|
-
const { getArgs } = require('./getArgs');
|
3
|
-
|
4
|
-
let LANGUAGE;
|
5
|
-
const getLanguage = async () => {
|
6
|
-
if (LANGUAGE) {
|
7
|
-
return LANGUAGE;
|
8
|
-
}
|
9
|
-
|
10
|
-
const args = getArgs();
|
11
|
-
// TODO: Split template to get lang?
|
12
|
-
if (args['--template']) {
|
13
|
-
LANGUAGE = args['--template'];
|
14
|
-
return LANGUAGE;
|
15
|
-
}
|
16
|
-
|
17
|
-
const response = await prompts(
|
18
|
-
{
|
19
|
-
type: 'select',
|
20
|
-
name: 'value',
|
21
|
-
message: 'Choose language',
|
22
|
-
choices: [
|
23
|
-
{
|
24
|
-
title: 'javascript', value: 'js'
|
25
|
-
},
|
26
|
-
{
|
27
|
-
title: 'typescript', value: 'ts'
|
28
|
-
}
|
29
|
-
],
|
30
|
-
validate: value => value.length,
|
31
|
-
},
|
32
|
-
{
|
33
|
-
onCancel: () => {
|
34
|
-
process.exit(0);
|
35
|
-
},
|
36
|
-
}
|
37
|
-
);
|
38
|
-
|
39
|
-
LANGUAGE = response.value;
|
40
|
-
return LANGUAGE;
|
41
|
-
};
|
42
|
-
|
43
|
-
module.exports = { getLanguage };
|
@@ -1,27 +0,0 @@
|
|
1
|
-
const commandExists = require('command-exists');
|
2
|
-
const { getArgs } = require('./getArgs');
|
3
|
-
const { setTags } = require('./usage');
|
4
|
-
|
5
|
-
let PACKAGE_MANAGER = false;
|
6
|
-
const getPackageManager = async () => {
|
7
|
-
if (PACKAGE_MANAGER) {
|
8
|
-
return PACKAGE_MANAGER;
|
9
|
-
}
|
10
|
-
|
11
|
-
const args = getArgs();
|
12
|
-
|
13
|
-
if (args['--use-npm']) {
|
14
|
-
PACKAGE_MANAGER = 'npm';
|
15
|
-
} else {
|
16
|
-
try {
|
17
|
-
await commandExists('yarn');
|
18
|
-
PACKAGE_MANAGER = 'yarn';
|
19
|
-
} catch (error) {
|
20
|
-
PACKAGE_MANAGER = 'npm';
|
21
|
-
}
|
22
|
-
}
|
23
|
-
setTags({ package_manager: PACKAGE_MANAGER });
|
24
|
-
return PACKAGE_MANAGER;
|
25
|
-
}
|
26
|
-
|
27
|
-
module.exports = { getPackageManager };
|
@@ -1,34 +0,0 @@
|
|
1
|
-
const prompts = require('prompts');
|
2
|
-
const { getArgs } = require('./getArgs');
|
3
|
-
|
4
|
-
let PAYLOAD_SECRET;
|
5
|
-
const getPayloadSecret = async () => {
|
6
|
-
if (PAYLOAD_SECRET) {
|
7
|
-
return PAYLOAD_SECRET;
|
8
|
-
}
|
9
|
-
|
10
|
-
const args = getArgs();
|
11
|
-
if (args['--secret']) {
|
12
|
-
PAYLOAD_SECRET = args['--secret'];
|
13
|
-
return PAYLOAD_SECRET;
|
14
|
-
}
|
15
|
-
|
16
|
-
const response = await prompts(
|
17
|
-
{
|
18
|
-
type: 'password',
|
19
|
-
name: 'value',
|
20
|
-
message: 'Enter a long, complex string for Payload’s encryption key',
|
21
|
-
validate: value => value.length,
|
22
|
-
},
|
23
|
-
{
|
24
|
-
onCancel: () => {
|
25
|
-
process.exit(0);
|
26
|
-
},
|
27
|
-
}
|
28
|
-
);
|
29
|
-
|
30
|
-
PAYLOAD_SECRET = response.value;
|
31
|
-
return PAYLOAD_SECRET;
|
32
|
-
};
|
33
|
-
|
34
|
-
module.exports = { getPayloadSecret };
|
package/utils/getProjectDir.js
DELETED
package/utils/getProjectName.js
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
const prompts = require('prompts');
|
2
|
-
const { getArgs } = require('./getArgs');
|
3
|
-
|
4
|
-
let PROJECT_NAME;
|
5
|
-
const getProjectName = async () => {
|
6
|
-
if (PROJECT_NAME) {
|
7
|
-
return PROJECT_NAME;
|
8
|
-
}
|
9
|
-
|
10
|
-
const args = getArgs();
|
11
|
-
if (args['--name']) {
|
12
|
-
PROJECT_NAME = args['--name'];
|
13
|
-
return PROJECT_NAME;
|
14
|
-
}
|
15
|
-
|
16
|
-
if (args._[0]) {
|
17
|
-
PROJECT_NAME = args._[0];
|
18
|
-
return PROJECT_NAME;
|
19
|
-
}
|
20
|
-
|
21
|
-
const response = await prompts(
|
22
|
-
{
|
23
|
-
type: 'text',
|
24
|
-
name: 'value',
|
25
|
-
message: 'Project name?',
|
26
|
-
validate: value => value.length,
|
27
|
-
},
|
28
|
-
{
|
29
|
-
onCancel: () => {
|
30
|
-
process.exit(0);
|
31
|
-
},
|
32
|
-
}
|
33
|
-
);
|
34
|
-
|
35
|
-
PROJECT_NAME = response.value;
|
36
|
-
return PROJECT_NAME;
|
37
|
-
};
|
38
|
-
|
39
|
-
module.exports = { getProjectName };
|
package/utils/getTemplate.js
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
const prompts = require('prompts');
|
2
|
-
const { getArgs } = require('./getArgs');
|
3
|
-
const { getLanguage } = require('./getLanguage');
|
4
|
-
const { getValidTemplates } = require('./getValidTemplates');
|
5
|
-
const { setTags } = require('./usage');
|
6
|
-
|
7
|
-
let TEMPLATE;
|
8
|
-
const getTemplate = async () => {
|
9
|
-
if (TEMPLATE) {
|
10
|
-
return TEMPLATE;
|
11
|
-
}
|
12
|
-
|
13
|
-
const args = getArgs();
|
14
|
-
const templates = await getValidTemplates();
|
15
|
-
if (args['--template']) {
|
16
|
-
TEMPLATE = args['--template'];
|
17
|
-
setTags({ template: TEMPLATE });
|
18
|
-
return TEMPLATE;
|
19
|
-
}
|
20
|
-
|
21
|
-
const lang = await getLanguage();
|
22
|
-
const filteredTemplates = templates
|
23
|
-
.filter(d => d.startsWith(lang))
|
24
|
-
.map(t => t.replace(`${lang}-`, ''));
|
25
|
-
|
26
|
-
const response = await prompts(
|
27
|
-
{
|
28
|
-
type: 'select',
|
29
|
-
name: 'value',
|
30
|
-
message: 'Choose project template',
|
31
|
-
choices: filteredTemplates.map(p => {
|
32
|
-
return { title: p, value: p };
|
33
|
-
}),
|
34
|
-
validate: value => value.length,
|
35
|
-
},
|
36
|
-
{
|
37
|
-
onCancel: () => {
|
38
|
-
process.exit(0);
|
39
|
-
},
|
40
|
-
}
|
41
|
-
);
|
42
|
-
|
43
|
-
TEMPLATE = `${lang}-${response.value}`;
|
44
|
-
setTags({ template: TEMPLATE });
|
45
|
-
|
46
|
-
return TEMPLATE;
|
47
|
-
};
|
48
|
-
|
49
|
-
module.exports = { getTemplate };
|
@@ -1,29 +0,0 @@
|
|
1
|
-
const fs = require('fs');
|
2
|
-
const path = require('path');
|
3
|
-
const { error, info } = require('./log');
|
4
|
-
|
5
|
-
const getDirectories = (dir) => fs.readdirSync(dir).filter(file => {
|
6
|
-
return fs.statSync(dir + '/' + file).isDirectory();
|
7
|
-
});
|
8
|
-
|
9
|
-
let VALID_TEMPLATES;
|
10
|
-
const getValidTemplates = async () => {
|
11
|
-
if (VALID_TEMPLATES) {
|
12
|
-
return VALID_TEMPLATES;
|
13
|
-
}
|
14
|
-
const templateDir = path.resolve(__dirname, '../templates');
|
15
|
-
VALID_TEMPLATES = getDirectories(templateDir);
|
16
|
-
return VALID_TEMPLATES;
|
17
|
-
};
|
18
|
-
|
19
|
-
const validateTemplate = async (templateName) => {
|
20
|
-
VALID_TEMPLATES = await getValidTemplates();
|
21
|
-
if (!VALID_TEMPLATES.includes(templateName)) {
|
22
|
-
error(`'${templateName}' is not a valid template.`);
|
23
|
-
info(`Valid templates: ${VALID_TEMPLATES.join(', ')}`);
|
24
|
-
return false;
|
25
|
-
}
|
26
|
-
return true;
|
27
|
-
}
|
28
|
-
|
29
|
-
module.exports = { getValidTemplates, validateTemplate };
|
package/utils/log.js
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
const chalk = require('chalk');
|
2
|
-
const figures = require('figures');
|
3
|
-
|
4
|
-
const isWin = process.platform === 'win32';
|
5
|
-
|
6
|
-
const success = (message) => {
|
7
|
-
console.log(chalk.green(figures.tick) + ' ' + chalk.bold(message));
|
8
|
-
}
|
9
|
-
|
10
|
-
const warning = (message) => {
|
11
|
-
console.log(chalk.yellow('? ') + chalk.bold(message));
|
12
|
-
}
|
13
|
-
|
14
|
-
const info = (message) => {
|
15
|
-
console.log(chalk.yellow(figures.info) + ' ' + chalk.bold(message));
|
16
|
-
}
|
17
|
-
|
18
|
-
const error = (message) => {
|
19
|
-
console.log(chalk.red(figures.cross) + ' ' + chalk.bold(message));
|
20
|
-
}
|
21
|
-
|
22
|
-
module.exports = {
|
23
|
-
success,
|
24
|
-
warning,
|
25
|
-
info,
|
26
|
-
error,
|
27
|
-
}
|
package/utils/messages.js
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
const chalk = require('chalk');
|
2
|
-
const figures = require('figures');
|
3
|
-
const terminalLink = require('terminal-link');
|
4
|
-
const { getProjectDir } = require('./getProjectDir');
|
5
|
-
const { getPackageManager } = require('./getPackageManager');
|
6
|
-
const { getValidTemplates } = require('./getValidTemplates');
|
7
|
-
|
8
|
-
const header = (message) => chalk.yellow(figures.star) + ' ' + chalk.bold(message);
|
9
|
-
|
10
|
-
const welcomeMessage = chalk`
|
11
|
-
{green Welcome to Payload. Let's create a project! }
|
12
|
-
`;
|
13
|
-
|
14
|
-
const helpMessage = async () => {
|
15
|
-
const validTemplates = await getValidTemplates();
|
16
|
-
return chalk`
|
17
|
-
{bold USAGE}
|
18
|
-
|
19
|
-
{dim $} {bold npx create-payload-app}
|
20
|
-
|
21
|
-
{bold OPTIONS}
|
22
|
-
|
23
|
-
--name {underline my-payload-app} Set project name
|
24
|
-
--template {underline template_name} Choose specific template
|
25
|
-
|
26
|
-
{dim Available templates: ${validTemplates.join(', ')}}
|
27
|
-
|
28
|
-
--use-npm Use npm to install dependencies
|
29
|
-
--no-deps Do not install any dependencies
|
30
|
-
--help Show help
|
31
|
-
`;
|
32
|
-
};
|
33
|
-
|
34
|
-
const successMessage = async () => `
|
35
|
-
${header('Launch Application:')}
|
36
|
-
|
37
|
-
- cd ${await getProjectDir()}
|
38
|
-
- ${await getPackageManager() === 'yarn' ? 'yarn' : 'npm run'} dev
|
39
|
-
|
40
|
-
${header('Documentation:')}
|
41
|
-
|
42
|
-
- ${terminalLink('Getting Started', 'https://payloadcms.com/docs/getting-started/what-is-payload')}
|
43
|
-
- ${terminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}
|
44
|
-
|
45
|
-
`;
|
46
|
-
|
47
|
-
module.exports = {
|
48
|
-
welcomeMessage,
|
49
|
-
helpMessage,
|
50
|
-
successMessage,
|
51
|
-
}
|
package/utils/usage.js
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
const Sentry = require('@sentry/node');
|
2
|
-
const os = require('os');
|
3
|
-
|
4
|
-
const init = () => {
|
5
|
-
Sentry.init({
|
6
|
-
dsn: "https://139de3d0197f464082d5715a0c48a497@o589961.ingest.sentry.io/5739829",
|
7
|
-
tracesSampleRate: 1.0,
|
8
|
-
});
|
9
|
-
|
10
|
-
Sentry.setTags({
|
11
|
-
os_type: os.type(),
|
12
|
-
os_platform: os.platform(),
|
13
|
-
os_release: os.release(),
|
14
|
-
node_version: process.version,
|
15
|
-
});
|
16
|
-
|
17
|
-
return Sentry.startTransaction({
|
18
|
-
op: "create-payload-app",
|
19
|
-
name: "New Project",
|
20
|
-
});
|
21
|
-
}
|
22
|
-
|
23
|
-
const setTags = (tags) => {
|
24
|
-
Sentry.setTags({ ...tags });
|
25
|
-
}
|
26
|
-
|
27
|
-
const handleException = (e) => {
|
28
|
-
Sentry.captureException(e);
|
29
|
-
}
|
30
|
-
|
31
|
-
module.exports = {
|
32
|
-
init,
|
33
|
-
setTags,
|
34
|
-
handleException,
|
35
|
-
};
|
package/utils/writeEnvFile.js
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
const fs = require('fs-extra');
|
2
|
-
const { getDatabaseConnection } = require('./getDatabaseConnection');
|
3
|
-
const { getPayloadSecret } = require('./getPayloadSecret');
|
4
|
-
const { getProjectDir } = require('./getProjectDir');
|
5
|
-
const { error, success } = require('./log');
|
6
|
-
|
7
|
-
const writeEnvFile = async () => {
|
8
|
-
|
9
|
-
const mongoURI = await getDatabaseConnection();
|
10
|
-
const payloadSecret = await getPayloadSecret();
|
11
|
-
|
12
|
-
let content = `MONGODB_URI=${mongoURI}\nPAYLOAD_SECRET=${payloadSecret}`;
|
13
|
-
|
14
|
-
try {
|
15
|
-
await fs.outputFile(`${await getProjectDir()}/.env`, content);
|
16
|
-
success('.env file created');
|
17
|
-
} catch (err) {
|
18
|
-
error('Unable to write .env file');
|
19
|
-
error(err);
|
20
|
-
process.exit(1);
|
21
|
-
}
|
22
|
-
return;
|
23
|
-
};
|
24
|
-
|
25
|
-
module.exports = { writeEnvFile };
|