Skip to content

Commit 737720f

Browse files
committed
refactor: extract templates into separate files
1 parent f658961 commit 737720f

File tree

3 files changed

+52
-48
lines changed

3 files changed

+52
-48
lines changed

src/cli.js

+13-48
Original file line numberDiff line numberDiff line change
@@ -21,72 +21,37 @@ const loadConfig = (endpointsFile) => {
2121
}
2222
};
2323

24-
const createEndpoints = (destDir, fileName, config) => {
24+
const createEndpoints = async (destDir, fileName, config) => {
2525
console.log('Generate', fileName);
2626
const resultFile = path.join(destDir, fileName);
2727

2828
for (let endpoint of config) {
2929
console.log('GET', endpoint.path, '=>', endpoint.get);
3030
}
3131

32-
const template = `const express = require('express')
33-
const mysql = require('mysql')
34-
35-
const app = express()
36-
app.set('x-powered-by', false)
37-
38-
const pool = mysql.createPool({
39-
connectionLimit: 2,
40-
host: process.env.DB_HOST,
41-
user: process.env.DB_USER,
42-
password: process.env.DB_PASSWORD,
43-
database: process.env.DB_NAME
44-
})
45-
46-
<% endpoints.forEach(function(endpoint) { %>
47-
app.get('<%- endpoint.path %>', (req, res) => {
48-
pool.query('<%= endpoint.get %>', (err, rows, fields) => {
49-
if (err) {
50-
throw err
51-
}
52-
res.json(rows[0])
32+
const resultedCode = await ejs.renderFile(
33+
__dirname + '/templates/app.js.ejs',
34+
{
35+
"endpoints": config
5336
})
54-
})
55-
<% }); %>
56-
57-
app.listen(3000, () => {
58-
console.log('Listen on 3000')
59-
})\n`.replace(/^ /gm, '');
60-
61-
const resultedCode = ejs.render(template, {
62-
"endpoints": config
63-
});
37+
;
6438

6539
fs.writeFileSync(resultFile, resultedCode);
6640
};
6741

68-
const createPackageJson = (destDir, fileName) => {
42+
const createPackageJson = async (destDir, fileName) => {
6943
console.log('Generate', fileName);
7044

7145
const resultFile = path.join(destDir, fileName);
7246
const projectName = path.basename(destDir);
7347
console.log('Project name:', projectName);
7448

75-
const template = `{
76-
"name": "<%- projectName %>",
77-
"version": "1.0.0",
78-
"scripts": {
79-
"start": "node app.js"
80-
},
81-
"dependencies": {
82-
"express": "~4.17.1",
83-
"mysql": "~2.18.1"
84-
}
85-
}\n`.replace(/^ /gm, '');
86-
87-
const minimalPackageJson = ejs.render(template, {
88-
projectName
89-
});
49+
const minimalPackageJson = await ejs.renderFile(
50+
__dirname + '/templates/package.json.ejs',
51+
{
52+
projectName
53+
}
54+
);
9055

9156
fs.writeFileSync(resultFile, minimalPackageJson);
9257
};

src/templates/app.js.ejs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const express = require('express')
2+
const mysql = require('mysql')
3+
4+
const app = express()
5+
app.set('x-powered-by', false)
6+
7+
const pool = mysql.createPool({
8+
connectionLimit: 2,
9+
host: process.env.DB_HOST,
10+
user: process.env.DB_USER,
11+
password: process.env.DB_PASSWORD,
12+
database: process.env.DB_NAME
13+
})
14+
15+
<% endpoints.forEach(function(endpoint) { %>
16+
app.get('<%- endpoint.path %>', (req, res) => {
17+
pool.query('<%= endpoint.get %>', (err, rows, fields) => {
18+
if (err) {
19+
throw err
20+
}
21+
res.json(rows[0])
22+
})
23+
})
24+
<% }); %>
25+
26+
app.listen(3000, () => {
27+
console.log('Listen on 3000')
28+
})

src/templates/package.json.ejs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"name": "<%- projectName %>",
3+
"version": "1.0.0",
4+
"scripts": {
5+
"start": "node app.js"
6+
},
7+
"dependencies": {
8+
"express": "~4.17.1",
9+
"mysql": "~2.18.1"
10+
}
11+
}

0 commit comments

Comments
 (0)