create-payload-app 0.3.14 → 0.3.15-beta.0
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/bin/cli.js +0 -0
- package/dist/index.js +14 -26
- package/dist/lib/common-files/README.template.md +9 -0
- package/dist/lib/common-files/docker-compose.template.yml +35 -0
- package/dist/{templates → lib/common-files}/gitignore.template +0 -0
- package/dist/{templates/js-blank → lib/common-files/javascript}/nodemon.json +0 -0
- package/dist/{templates/js-blank/package.json → lib/common-files/javascript/package.template.json} +3 -3
- package/dist/{templates → lib/common-files}/npmrc.template +0 -0
- package/dist/{templates/ts-blank → lib/common-files/typescript}/nodemon.json +0 -0
- package/dist/{templates/ts-blank/package.json → lib/common-files/typescript/package.template.json} +4 -4
- package/dist/{templates/ts-blank → lib/common-files/typescript}/tsconfig.json +0 -0
- package/dist/lib/{createProject.js → create-project.js} +25 -26
- package/dist/lib/{createProject.test.js → create-project.test.js} +36 -6
- package/dist/lib/{generateSecret.js → generate-secret.js} +0 -0
- package/dist/lib/{getDatabaseConnection.js → get-db-connection.js} +0 -0
- package/dist/lib/{parseLanguage.js → parse-language.js} +0 -0
- package/dist/lib/{parseProjectName.js → parse-project-name.js} +0 -0
- package/dist/lib/{parseTemplate.js → parse-template.js} +1 -4
- package/dist/lib/templates.js +6 -2
- package/dist/lib/write-common-files.js +118 -0
- package/dist/lib/{writeEnvFile.js → write-env-file.js} +0 -0
- package/dist/main.js +40 -45
- package/dist/utils/log.js +3 -3
- package/dist/utils/messages.js +1 -1
- package/package.json +22 -7
- package/dist/lib/constants.js +0 -4
- package/dist/lib/getPackageManager.js +0 -69
- package/dist/lib/getPayloadSecret.js +0 -69
- package/dist/lib/getPayloadVersion.js +0 -75
- package/dist/templates/js-blog/nodemon.json +0 -3
- package/dist/templates/js-blog/package.json +0 -20
- package/dist/templates/js-todo/nodemon.json +0 -3
- package/dist/templates/js-todo/package.json +0 -20
- package/dist/templates/ts-blog/nodemon.json +0 -4
- package/dist/templates/ts-blog/package.json +0 -30
- package/dist/templates/ts-blog/tsconfig.json +0 -28
- package/dist/templates/ts-todo/nodemon.json +0 -4
- package/dist/templates/ts-todo/package.json +0 -30
- package/dist/templates/ts-todo/tsconfig.json +0 -28
- package/dist/utils/telemetry.js +0 -44
- package/dist/utils/usage.js +0 -67
package/bin/cli.js
CHANGED
File without changes
|
package/dist/index.js
CHANGED
@@ -37,31 +37,19 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
37
37
|
};
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
39
39
|
var main_1 = require("./main");
|
40
|
-
var usage_1 = require("./utils/usage");
|
41
40
|
var log_1 = require("./utils/log");
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
return [4 /*yield*/, main.init()];
|
53
|
-
case 2:
|
54
|
-
_a.sent();
|
55
|
-
return [3 /*break*/, 5];
|
56
|
-
case 3:
|
57
|
-
e_1 = _a.sent();
|
58
|
-
(0, usage_1.handleException)(e_1);
|
59
|
-
(0, log_1.error)("An error has occurred: ".concat(e_1 instanceof Error ? e_1.message : e_1));
|
60
|
-
return [3 /*break*/, 5];
|
61
|
-
case 4:
|
62
|
-
trx === null || trx === void 0 ? void 0 : trx.finish();
|
63
|
-
return [7 /*endfinally*/];
|
64
|
-
case 5: return [2 /*return*/];
|
65
|
-
}
|
41
|
+
function main() {
|
42
|
+
return __awaiter(this, void 0, void 0, function () {
|
43
|
+
return __generator(this, function (_a) {
|
44
|
+
switch (_a.label) {
|
45
|
+
case 0: return [4 /*yield*/, new main_1.Main().init()];
|
46
|
+
case 1:
|
47
|
+
_a.sent();
|
48
|
+
return [2 /*return*/];
|
49
|
+
}
|
50
|
+
});
|
66
51
|
});
|
67
|
-
}
|
52
|
+
}
|
53
|
+
main().catch(function (e) {
|
54
|
+
return (0, log_1.error)("An error has occurred: ".concat(e instanceof Error ? e.message : e));
|
55
|
+
});
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# {{projectName}}
|
2
|
+
|
3
|
+
This project was created using create-payload-app using the {{templateName}} template.
|
4
|
+
|
5
|
+
## How to Use
|
6
|
+
|
7
|
+
`yarn dev` will start up your application and reload on any changes.
|
8
|
+
|
9
|
+
If you have docker and docker-compose installed, you can run `docker-compose up`
|
@@ -0,0 +1,35 @@
|
|
1
|
+
version: '3'
|
2
|
+
|
3
|
+
services:
|
4
|
+
|
5
|
+
payload:
|
6
|
+
image: node:18-alpine
|
7
|
+
ports:
|
8
|
+
- "3000:3000"
|
9
|
+
volumes:
|
10
|
+
- .:/home/node/app
|
11
|
+
- node_modules:/home/node/app/node_modules
|
12
|
+
working_dir: /home/node/app/
|
13
|
+
command: sh -c "{{installCmd}} && {{devCmd}}"
|
14
|
+
depends_on:
|
15
|
+
- mongo
|
16
|
+
environment:
|
17
|
+
MONGODB_URI: mongodb://mongo:27017/payload
|
18
|
+
PORT: 3000
|
19
|
+
NODE_ENV: development
|
20
|
+
PAYLOAD_SECRET: TESTING
|
21
|
+
|
22
|
+
mongo:
|
23
|
+
image: mongo:latest
|
24
|
+
ports:
|
25
|
+
- "27017:27017"
|
26
|
+
command:
|
27
|
+
- --storageEngine=wiredTiger
|
28
|
+
volumes:
|
29
|
+
- data:/data/db
|
30
|
+
logging:
|
31
|
+
driver: none
|
32
|
+
|
33
|
+
volumes:
|
34
|
+
data:
|
35
|
+
node_modules:
|
File without changes
|
File without changes
|
package/dist/{templates/js-blank/package.json → lib/common-files/javascript/package.template.json}
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
|
-
"name": "payload-
|
3
|
-
"description": "
|
2
|
+
"name": "payload-template-{{templateName}}",
|
3
|
+
"description": "Payload project created from {{templateName}} template",
|
4
4
|
"version": "1.0.0",
|
5
5
|
"main": "server.js",
|
6
6
|
"license": "MIT",
|
@@ -10,7 +10,7 @@
|
|
10
10
|
"serve": "NODE_ENV=production node server.js"
|
11
11
|
},
|
12
12
|
"dependencies": {
|
13
|
-
"payload": "1.
|
13
|
+
"payload": "1.1.17",
|
14
14
|
"dotenv": "^8.2.0",
|
15
15
|
"express": "^4.17.1"
|
16
16
|
},
|
File without changes
|
File without changes
|
package/dist/{templates/ts-blank/package.json → lib/common-files/typescript/package.template.json}
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
|
-
"name": "payload-
|
3
|
-
"description": "
|
2
|
+
"name": "payload-template-{{templateName}}",
|
3
|
+
"description": "Payload project created from {{templateName}} template",
|
4
4
|
"version": "1.0.0",
|
5
5
|
"main": "dist/server.js",
|
6
6
|
"license": "MIT",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"generate:graphQLSchema": "PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:graphQLSchema"
|
16
16
|
},
|
17
17
|
"dependencies": {
|
18
|
-
"payload": "1.
|
18
|
+
"payload": "1.1.17",
|
19
19
|
"dotenv": "^8.2.0",
|
20
20
|
"express": "^4.17.1"
|
21
21
|
},
|
@@ -25,6 +25,6 @@
|
|
25
25
|
"nodemon": "^2.0.6",
|
26
26
|
"ts-node": "^9.1.1",
|
27
27
|
"copyfiles": "^2.4.1",
|
28
|
-
"typescript": "^4.
|
28
|
+
"typescript": "^4.8.4"
|
29
29
|
}
|
30
30
|
}
|
File without changes
|
@@ -47,7 +47,7 @@ var execa_1 = __importDefault(require("execa"));
|
|
47
47
|
var ora_1 = __importDefault(require("ora"));
|
48
48
|
var degit_1 = __importDefault(require("degit"));
|
49
49
|
var log_1 = require("../utils/log");
|
50
|
-
var
|
50
|
+
var write_common_files_1 = require("./write-common-files");
|
51
51
|
function createProjectDir(projectDir) {
|
52
52
|
return __awaiter(this, void 0, void 0, function () {
|
53
53
|
var pathExists;
|
@@ -70,7 +70,7 @@ function createProjectDir(projectDir) {
|
|
70
70
|
}
|
71
71
|
function installDeps(args, dir, packageManager) {
|
72
72
|
return __awaiter(this, void 0, void 0, function () {
|
73
|
-
var cmd,
|
73
|
+
var cmd, err_1;
|
74
74
|
return __generator(this, function (_a) {
|
75
75
|
switch (_a.label) {
|
76
76
|
case 0:
|
@@ -88,7 +88,7 @@ function installDeps(args, dir, packageManager) {
|
|
88
88
|
_a.sent();
|
89
89
|
return [2 /*return*/, true];
|
90
90
|
case 3:
|
91
|
-
|
91
|
+
err_1 = _a.sent();
|
92
92
|
return [2 /*return*/, false];
|
93
93
|
case 4: return [2 /*return*/];
|
94
94
|
}
|
@@ -98,7 +98,7 @@ function installDeps(args, dir, packageManager) {
|
|
98
98
|
function getLatestPayloadVersion(betaFlag) {
|
99
99
|
if (betaFlag === void 0) { betaFlag = false; }
|
100
100
|
return __awaiter(this, void 0, void 0, function () {
|
101
|
-
var packageWithTag, stdout,
|
101
|
+
var packageWithTag, stdout, err_2;
|
102
102
|
return __generator(this, function (_a) {
|
103
103
|
switch (_a.label) {
|
104
104
|
case 0:
|
@@ -113,7 +113,11 @@ function getLatestPayloadVersion(betaFlag) {
|
|
113
113
|
stdout = (_a.sent()).stdout;
|
114
114
|
return [2 /*return*/, "^".concat(stdout)];
|
115
115
|
case 2:
|
116
|
-
|
116
|
+
err_2 = _a.sent();
|
117
|
+
if (err_2 instanceof Error) {
|
118
|
+
console.error(err_2.message);
|
119
|
+
console.error(err_2.stack);
|
120
|
+
}
|
117
121
|
return [2 /*return*/, false];
|
118
122
|
case 3: return [2 /*return*/];
|
119
123
|
}
|
@@ -124,7 +128,7 @@ exports.getLatestPayloadVersion = getLatestPayloadVersion;
|
|
124
128
|
function updatePayloadVersion(projectDir, betaFlag) {
|
125
129
|
if (betaFlag === void 0) { betaFlag = false; }
|
126
130
|
return __awaiter(this, void 0, void 0, function () {
|
127
|
-
var payloadVersion, packageJsonPath, packageObj,
|
131
|
+
var payloadVersion, packageJsonPath, packageObj, err_3;
|
128
132
|
return __generator(this, function (_a) {
|
129
133
|
switch (_a.label) {
|
130
134
|
case 0: return [4 /*yield*/, getLatestPayloadVersion(betaFlag)];
|
@@ -134,7 +138,6 @@ function updatePayloadVersion(projectDir, betaFlag) {
|
|
134
138
|
(0, log_1.warning)('Error retrieving latest Payload version. Please update your package.json manually.');
|
135
139
|
return [2 /*return*/];
|
136
140
|
}
|
137
|
-
(0, usage_1.setTags)({ payload_version: payloadVersion });
|
138
141
|
packageJsonPath = path_1.default.resolve(projectDir, 'package.json');
|
139
142
|
_a.label = 2;
|
140
143
|
case 2:
|
@@ -148,7 +151,7 @@ function updatePayloadVersion(projectDir, betaFlag) {
|
|
148
151
|
_a.sent();
|
149
152
|
return [3 /*break*/, 6];
|
150
153
|
case 5:
|
151
|
-
|
154
|
+
err_3 = _a.sent();
|
152
155
|
(0, log_1.warning)('Unable to write Payload version to package.json. Please update your package.json manually.');
|
153
156
|
return [3 /*break*/, 6];
|
154
157
|
case 6: return [2 /*return*/];
|
@@ -159,7 +162,7 @@ function updatePayloadVersion(projectDir, betaFlag) {
|
|
159
162
|
exports.updatePayloadVersion = updatePayloadVersion;
|
160
163
|
function createProject(args, projectDir, template, packageManager) {
|
161
164
|
return __awaiter(this, void 0, void 0, function () {
|
162
|
-
var templateDir, emitter,
|
165
|
+
var templateDir, emitter, err_4, msg, spinner, result;
|
163
166
|
return __generator(this, function (_a) {
|
164
167
|
switch (_a.label) {
|
165
168
|
case 0: return [4 /*yield*/, createProjectDir(projectDir)];
|
@@ -172,38 +175,34 @@ function createProject(args, projectDir, template, packageManager) {
|
|
172
175
|
return [4 /*yield*/, emitter.clone(projectDir)];
|
173
176
|
case 2:
|
174
177
|
_a.sent();
|
175
|
-
return [3 /*break*/,
|
178
|
+
return [3 /*break*/, 7];
|
176
179
|
case 3:
|
177
|
-
_a.trys.push([3,
|
180
|
+
_a.trys.push([3, 6, , 7]);
|
178
181
|
return [4 /*yield*/, fs_extra_1.default.copy(templateDir, projectDir, { recursive: true })];
|
179
182
|
case 4:
|
180
183
|
_a.sent();
|
181
|
-
|
182
|
-
dest = path_1.default.resolve(projectDir, '.npmrc');
|
183
|
-
return [4 /*yield*/, fs_extra_1.default.copy(src, dest)];
|
184
|
+
return [4 /*yield*/, (0, write_common_files_1.writeCommonFiles)(projectDir, template, packageManager)];
|
184
185
|
case 5:
|
185
|
-
_a.sent();
|
186
|
-
gi = path_1.default.resolve(templateDir, '..', 'gitignore.template');
|
187
|
-
giDest = path_1.default.resolve(projectDir, '.gitignore');
|
188
|
-
return [4 /*yield*/, fs_extra_1.default.copy(gi, giDest)];
|
189
|
-
case 6:
|
190
186
|
_a.sent();
|
191
187
|
(0, log_1.success)('Project directory created');
|
192
|
-
return [3 /*break*/,
|
193
|
-
case
|
194
|
-
|
188
|
+
return [3 /*break*/, 7];
|
189
|
+
case 6:
|
190
|
+
err_4 = _a.sent();
|
195
191
|
msg = 'Unable to copy template files. Please check template name or directory permissions.';
|
196
192
|
(0, log_1.error)(msg);
|
193
|
+
if (err_4 instanceof Error) {
|
194
|
+
console.error({ err: err_4 });
|
195
|
+
}
|
197
196
|
process.exit(1);
|
198
|
-
return [3 /*break*/,
|
199
|
-
case
|
197
|
+
return [3 /*break*/, 7];
|
198
|
+
case 7:
|
200
199
|
spinner = (0, ora_1.default)('Checking latest Payload version...').start();
|
201
200
|
return [4 /*yield*/, updatePayloadVersion(projectDir, args['--beta'])];
|
202
|
-
case
|
201
|
+
case 8:
|
203
202
|
_a.sent();
|
204
203
|
spinner.text = 'Installing dependencies...';
|
205
204
|
return [4 /*yield*/, installDeps(args, projectDir, packageManager)];
|
206
|
-
case
|
205
|
+
case 9:
|
207
206
|
result = _a.sent();
|
208
207
|
spinner.stop();
|
209
208
|
spinner.clear();
|
@@ -41,9 +41,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
42
42
|
var fs_extra_1 = __importDefault(require("fs-extra"));
|
43
43
|
var path_1 = __importDefault(require("path"));
|
44
|
-
var
|
44
|
+
var create_project_1 = require("./create-project");
|
45
|
+
var projectDir = path_1.default.resolve(__dirname, './tmp');
|
45
46
|
describe('createProject', function () {
|
46
|
-
var projectDir = path_1.default.resolve(__dirname, './tmp');
|
47
47
|
beforeAll(function () {
|
48
48
|
console.log = jest.fn();
|
49
49
|
});
|
@@ -58,22 +58,36 @@ describe('createProject', function () {
|
|
58
58
|
}
|
59
59
|
});
|
60
60
|
describe('#createProject', function () {
|
61
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
61
62
|
var args = { _: ['project-name'], '--no-deps': true };
|
62
63
|
var packageManager = 'yarn';
|
63
64
|
it('creates static project', function () { return __awaiter(void 0, void 0, void 0, function () {
|
64
65
|
var expectedPayloadVersion, template, packageJsonPath, packageJson;
|
65
66
|
return __generator(this, function (_a) {
|
66
67
|
switch (_a.label) {
|
67
|
-
case 0: return [4 /*yield*/, (0,
|
68
|
+
case 0: return [4 /*yield*/, (0, create_project_1.getLatestPayloadVersion)()];
|
68
69
|
case 1:
|
69
70
|
expectedPayloadVersion = _a.sent();
|
70
|
-
template = {
|
71
|
-
|
71
|
+
template = {
|
72
|
+
name: 'ts-todo',
|
73
|
+
type: 'static',
|
74
|
+
language: 'typescript',
|
75
|
+
};
|
76
|
+
return [4 /*yield*/, (0, create_project_1.createProject)(args, projectDir, template, packageManager)];
|
72
77
|
case 2:
|
73
78
|
_a.sent();
|
74
79
|
packageJsonPath = path_1.default.resolve(projectDir, 'package.json');
|
75
80
|
packageJson = fs_extra_1.default.readJsonSync(packageJsonPath);
|
76
81
|
expect(packageJson.dependencies.payload).toBe(expectedPayloadVersion);
|
82
|
+
// Check package name comtains template name
|
83
|
+
expect(packageJson.name).toContain('ts-todo');
|
84
|
+
// Check all common files are create
|
85
|
+
assertProjectFileExists('.npmrc');
|
86
|
+
assertProjectFileExists('.gitignore');
|
87
|
+
assertProjectFileExists('nodemon.json');
|
88
|
+
assertProjectFileExists('README.md');
|
89
|
+
assertProjectFileExists('tsconfig.json');
|
90
|
+
assertProjectFileExists('docker-compose.yml');
|
77
91
|
return [2 /*return*/];
|
78
92
|
}
|
79
93
|
});
|
@@ -92,7 +106,7 @@ describe('createProject', function () {
|
|
92
106
|
return [4 /*yield*/, fs_extra_1.default.writeJson(packageJsonPath, { dependencies: { payload: '0.0.1' } }, { spaces: 2 })];
|
93
107
|
case 2:
|
94
108
|
_a.sent();
|
95
|
-
return [4 /*yield*/, (0,
|
109
|
+
return [4 /*yield*/, (0, create_project_1.updatePayloadVersion)(projectDir)];
|
96
110
|
case 3:
|
97
111
|
_a.sent();
|
98
112
|
return [4 /*yield*/, fs_extra_1.default.readJson(packageJsonPath)];
|
@@ -105,3 +119,19 @@ describe('createProject', function () {
|
|
105
119
|
}); });
|
106
120
|
});
|
107
121
|
});
|
122
|
+
function assertProjectFileExists(fileName) {
|
123
|
+
return __awaiter(this, void 0, void 0, function () {
|
124
|
+
var filePath, _a;
|
125
|
+
return __generator(this, function (_b) {
|
126
|
+
switch (_b.label) {
|
127
|
+
case 0:
|
128
|
+
filePath = path_1.default.resolve(projectDir, fileName);
|
129
|
+
_a = expect;
|
130
|
+
return [4 /*yield*/, fs_extra_1.default.pathExists(filePath)];
|
131
|
+
case 1:
|
132
|
+
_a.apply(void 0, [_b.sent()]).toBe(true);
|
133
|
+
return [2 /*return*/];
|
134
|
+
}
|
135
|
+
});
|
136
|
+
});
|
137
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -41,7 +41,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
42
42
|
exports.parseTemplate = void 0;
|
43
43
|
var prompts_1 = __importDefault(require("prompts"));
|
44
|
-
var usage_1 = require("../utils/usage");
|
45
44
|
function parseTemplate(args, validTemplates, language) {
|
46
45
|
return __awaiter(this, void 0, void 0, function () {
|
47
46
|
var templateName_1, template_1, filteredTemplates, response, template;
|
@@ -50,10 +49,9 @@ function parseTemplate(args, validTemplates, language) {
|
|
50
49
|
case 0:
|
51
50
|
if (args['--template']) {
|
52
51
|
templateName_1 = args['--template'];
|
53
|
-
template_1 = validTemplates.find(function (
|
52
|
+
template_1 = validTemplates.find(function (t) { return t.name === templateName_1; });
|
54
53
|
if (!template_1)
|
55
54
|
throw new Error('Invalid template given');
|
56
|
-
(0, usage_1.setTags)({ template: template_1.name });
|
57
55
|
return [2 /*return*/, template_1];
|
58
56
|
}
|
59
57
|
filteredTemplates = validTemplates
|
@@ -79,7 +77,6 @@ function parseTemplate(args, validTemplates, language) {
|
|
79
77
|
template = validTemplates.find(function (t) { return t.name === response.value; });
|
80
78
|
if (!template)
|
81
79
|
throw new Error('Template is undefined');
|
82
|
-
(0, usage_1.setTags)({ template: template.name });
|
83
80
|
return [2 /*return*/, template];
|
84
81
|
}
|
85
82
|
});
|
package/dist/lib/templates.js
CHANGED
@@ -69,7 +69,11 @@ function getValidTemplates() {
|
|
69
69
|
templateDir = path_1.default.resolve(__dirname, '../templates');
|
70
70
|
dirs = getDirectories(templateDir);
|
71
71
|
templates = dirs.map(function (name) {
|
72
|
-
return {
|
72
|
+
return {
|
73
|
+
name: name,
|
74
|
+
type: 'static',
|
75
|
+
language: name.startsWith('js-') ? 'javascript' : 'typescript',
|
76
|
+
};
|
73
77
|
});
|
74
78
|
return [2 /*return*/, templates];
|
75
79
|
});
|
@@ -78,6 +82,6 @@ function getValidTemplates() {
|
|
78
82
|
exports.getValidTemplates = getValidTemplates;
|
79
83
|
function getDirectories(dir) {
|
80
84
|
return fs_1.default.readdirSync(dir).filter(function (file) {
|
81
|
-
return fs_1.default.statSync(dir
|
85
|
+
return fs_1.default.statSync("".concat(dir, "/").concat(file)).isDirectory();
|
82
86
|
});
|
83
87
|
}
|
@@ -0,0 +1,118 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
15
|
+
function step(op) {
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
17
|
+
while (_) try {
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
20
|
+
switch (op[0]) {
|
21
|
+
case 0: case 1: t = op; break;
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
25
|
+
default:
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
30
|
+
if (t[2]) _.ops.pop();
|
31
|
+
_.trys.pop(); continue;
|
32
|
+
}
|
33
|
+
op = body.call(thisArg, _);
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
36
|
+
}
|
37
|
+
};
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
40
|
+
};
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
42
|
+
exports.writeCommonFiles = void 0;
|
43
|
+
var path_1 = __importDefault(require("path"));
|
44
|
+
var fs_extra_1 = __importDefault(require("fs-extra"));
|
45
|
+
var handlebars_1 = __importDefault(require("handlebars"));
|
46
|
+
function writeCommonFiles(projectDir, template, packageManager) {
|
47
|
+
return __awaiter(this, void 0, void 0, function () {
|
48
|
+
var commonFilesDir, npmrc, npmrcDest, gi, giDest, packageJsonTemplate, packageJson, nodemon, nodemonDest, readmeTemplate, readme, tsconfig, tsconfigDest, dockerComposeTemplate, dockerCompose;
|
49
|
+
return __generator(this, function (_a) {
|
50
|
+
switch (_a.label) {
|
51
|
+
case 0:
|
52
|
+
commonFilesDir = path_1.default.resolve(__dirname, 'common-files');
|
53
|
+
npmrc = path_1.default.resolve(commonFilesDir, 'npmrc.template');
|
54
|
+
npmrcDest = path_1.default.resolve(projectDir, '.npmrc');
|
55
|
+
return [4 /*yield*/, fs_extra_1.default.copy(npmrc, npmrcDest)
|
56
|
+
// .gitignore
|
57
|
+
];
|
58
|
+
case 1:
|
59
|
+
_a.sent();
|
60
|
+
gi = path_1.default.resolve(commonFilesDir, 'gitignore.template');
|
61
|
+
giDest = path_1.default.resolve(projectDir, '.gitignore');
|
62
|
+
return [4 /*yield*/, fs_extra_1.default.copy(gi, giDest)
|
63
|
+
// package.json
|
64
|
+
];
|
65
|
+
case 2:
|
66
|
+
_a.sent();
|
67
|
+
return [4 /*yield*/, fs_extra_1.default.readFile(path_1.default.resolve(commonFilesDir, template.language, 'package.template.json'), 'utf8')];
|
68
|
+
case 3:
|
69
|
+
packageJsonTemplate = _a.sent();
|
70
|
+
packageJson = handlebars_1.default.compile(packageJsonTemplate)({
|
71
|
+
templateName: template.name,
|
72
|
+
});
|
73
|
+
return [4 /*yield*/, fs_extra_1.default.writeFile(path_1.default.resolve(projectDir, 'package.json'), packageJson)
|
74
|
+
// nodemon.json
|
75
|
+
];
|
76
|
+
case 4:
|
77
|
+
_a.sent();
|
78
|
+
nodemon = path_1.default.resolve(commonFilesDir, template.language, 'nodemon.json');
|
79
|
+
nodemonDest = path_1.default.resolve(projectDir, 'nodemon.json');
|
80
|
+
return [4 /*yield*/, fs_extra_1.default.copy(nodemon, nodemonDest)
|
81
|
+
// README.md
|
82
|
+
];
|
83
|
+
case 5:
|
84
|
+
_a.sent();
|
85
|
+
return [4 /*yield*/, fs_extra_1.default.readFile(path_1.default.resolve(commonFilesDir, 'README.template.md'), 'utf8')];
|
86
|
+
case 6:
|
87
|
+
readmeTemplate = _a.sent();
|
88
|
+
readme = handlebars_1.default.compile(readmeTemplate)({
|
89
|
+
projectName: path_1.default.basename(projectDir),
|
90
|
+
templateName: template.name,
|
91
|
+
});
|
92
|
+
return [4 /*yield*/, fs_extra_1.default.writeFile(path_1.default.resolve(projectDir, 'README.md'), readme)
|
93
|
+
// tsconfig.json
|
94
|
+
];
|
95
|
+
case 7:
|
96
|
+
_a.sent();
|
97
|
+
if (!(template.language === 'typescript')) return [3 /*break*/, 9];
|
98
|
+
tsconfig = path_1.default.resolve(commonFilesDir, template.language, 'tsconfig.json');
|
99
|
+
tsconfigDest = path_1.default.resolve(projectDir, 'tsconfig.json');
|
100
|
+
return [4 /*yield*/, fs_extra_1.default.copy(tsconfig, tsconfigDest)];
|
101
|
+
case 8:
|
102
|
+
_a.sent();
|
103
|
+
_a.label = 9;
|
104
|
+
case 9: return [4 /*yield*/, fs_extra_1.default.readFile(path_1.default.resolve(commonFilesDir, 'docker-compose.template.yml'), 'utf8')];
|
105
|
+
case 10:
|
106
|
+
dockerComposeTemplate = _a.sent();
|
107
|
+
dockerCompose = handlebars_1.default.compile(dockerComposeTemplate)(packageManager === 'yarn'
|
108
|
+
? { installCmd: 'yarn install', devCmd: 'yarn dev' }
|
109
|
+
: { installCmd: 'npm install', devCmd: 'npm run dev' });
|
110
|
+
return [4 /*yield*/, fs_extra_1.default.writeFile(path_1.default.resolve(projectDir, 'docker-compose.yml'), dockerCompose)];
|
111
|
+
case 11:
|
112
|
+
_a.sent();
|
113
|
+
return [2 /*return*/];
|
114
|
+
}
|
115
|
+
});
|
116
|
+
});
|
117
|
+
}
|
118
|
+
exports.writeCommonFiles = writeCommonFiles;
|
File without changes
|