Skip to content

Commit 77833b6

Browse files
committed
Initializes TypeScript, Koa, Serverless, GraphQL
0 parents  commit 77833b6

File tree

17 files changed

+9147
-0
lines changed

17 files changed

+9147
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.env
2+
.serverless
3+
.webpack
4+
node_modules

.prettierrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"parser": "typescript",
3+
"singleQuote": true,
4+
"semi": true,
5+
"arrowParens": "avoid",
6+
"printWidth": 100
7+
}

package.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "velog-server",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"author": "velopert <public.velopert@gmail.com>",
6+
"license": "MIT",
7+
"dependencies": {
8+
"@types/aws-lambda": "^8.10.17",
9+
"@types/dotenv": "^6.1.0",
10+
"@types/koa": "^2.0.48",
11+
"@types/koa-bodyparser": "^4.2.1",
12+
"@types/koa-router": "^7.0.38",
13+
"@types/node": "^10.12.18",
14+
"apollo-server-koa": "^2.3.1",
15+
"dotenv": "^6.2.0",
16+
"graphql": "^14.1.1",
17+
"koa": "^2.6.2",
18+
"koa-bodyparser": "^4.2.1",
19+
"koa-router": "^7.4.0",
20+
"serverless-http": "^1.9.0",
21+
"serverless-offline": "^4.1.4",
22+
"serverless-webpack": "^5.2.0",
23+
"source-map-support": "^0.5.10",
24+
"ts-loader": "^5.3.3",
25+
"ts-node-dev": "^1.0.0-pre.32",
26+
"tslint": "^5.12.1",
27+
"tslint-config-airbnb": "^5.11.1",
28+
"tslint-config-prettier": "^1.17.0",
29+
"typescript": "^3.2.4",
30+
"webpack": "^4.29.0"
31+
},
32+
"scripts": {
33+
"offline": "sls offline --port 5001",
34+
"dev": "ts-node-dev --respawn ./src/server.ts"
35+
}
36+
}

serverless.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
service:
2+
name: velog-server
3+
4+
# Add the serverless-webpack plugin
5+
plugins:
6+
- serverless-webpack
7+
- serverless-offline
8+
9+
provider:
10+
name: aws
11+
runtime: nodejs8.10
12+
region: ap-northeast-2
13+
stage: dev
14+
15+
functions:
16+
app:
17+
handler: src/serverless.handler
18+
events:
19+
- http:
20+
path: /
21+
method: ANY
22+
- http:
23+
path: /{any+}
24+
method: ANY

source-map-install.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require('source-map-support').install();

src/app.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import Koa from 'koa';
2+
import bodyParser from 'koa-bodyparser';
3+
import { ApolloServer, gql } from 'apollo-server-koa';
4+
import routes from './routes';
5+
6+
const app = new Koa();
7+
8+
/* setup middlewares */
9+
app.use(bodyParser());
10+
app.use(routes.routes()).use(routes.allowedMethods());
11+
12+
/* integrate GraphQL */
13+
const typeDefs = gql`
14+
type Query {
15+
hello: String
16+
}
17+
`;
18+
19+
const resolvers = {
20+
Query: {
21+
hello: () => 'Hello World!'
22+
}
23+
};
24+
25+
const apollo = new ApolloServer({ typeDefs, resolvers });
26+
apollo.applyMiddleware({ app });
27+
28+
export default app;

src/env.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import dotenv from 'dotenv';
2+
dotenv.load();

src/routes/api/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Router from 'koa-router';
2+
3+
const api = new Router();
4+
5+
api.get('/', ctx => {
6+
ctx.body = 'api';
7+
});
8+
9+
export default api;

src/routes/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Router from 'koa-router';
2+
import api from './api/index';
3+
4+
const routes = new Router();
5+
6+
routes.use('/api', api.routes());
7+
routes.get('/', ctx => {
8+
ctx.body = 'hello world!';
9+
});
10+
11+
export default routes;

src/server.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import './env';
2+
import app from './app';
3+
4+
const { PORT } = process.env;
5+
app.listen(PORT, () => {
6+
console.log('Velog server is listening to port', PORT);
7+
});

0 commit comments

Comments
 (0)