typescript-express-starter v10.2.1
ð íë¡ì ížë¥Œ ìê°í©ëë€.
Expressë ì í ì ìì ì·šìœí JavaScriptë¡ êµ¬ì± ëìŽììµëë€.
ìŽê²ìŽ ë°ë¡ TypeScript륌 ëì íë ì€íí° íší€ì§ë¡ ìíŒ ìžížë¥Œ íŒíë ìŽì ì ëë€.
íší€ì§ë JavaScript ëì TypeScript륌 ì¬ì©íëë¡ êµ¬ì±ëìŽ ììµëë€.
ì°žê³ : express-generator-typescript
ð€ Expressë 묎ììžê°ì ?
Node.js륌 ìí ë¹ ë¥Žê³ ê°ë°©ì ìž ê°ê²°í ì¹ íë ììí¬ì ëë€.
ð ììíêž°
npm ì ì ì€ì¹
$ npm install -g typescript-express-starter
npx륌 íµíŽ íë¡ì ížë¥Œ ì€ì¹
íë¡ì íž ìŽëŠì ì ë ¥íì§ ììŒë©Ž, Ʞ볞ê°ìŒë¡ typescript-express-starter íŽëë¡ ì€ì¹ë©ëë€.
$ npx typescript-express-starter "project name"
ìíìë í í늿ì ì í
ì€ì¹ê° ìë£ëë©Ž Script ëª ë ¹ìŽë¥Œ íµíŽ íë¡ì ížë¥Œ ì€íí©ëë€.
í í늿 ì¢ ë¥
ìŽëŠ | ì€ëª |
---|---|
Default | Express Ʞ볞 |
routing controllers | ë°ìœë ìŽí° ì¬ì©ëìŽ ë§ì 구조íëê³ ì ìžì ìŽë©° ìëŠëµê² 구ì±ë íŽëì€ êž°ë° ì»šížë¡€ë¬ ìì± |
Sequelize | PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server륌 ì§ìíë Promise íšíŽ êž°ë°ì Node.js ORM |
Mongoose | Node.jsì MongoDB륌 ìí ODM(Object Data Mapping) ëŒìŽëžë¬ëŠ¬ |
TypeORM | ìë°ì€í¬ëŠœíž, íì ì€í¬ëŠœížê³Œ íšê» ì¬ì©ëìŽ Node.js, React Native, Expoìì ì€íë ì ìë ORM |
Prisma | ë°ìŽí°ë² ìŽì€ì ë°ìŽí°ë¥Œ íë¡ê·žëë° ìžìŽì ê°ì²Žì 맀ííì¬ êž°ì¡Žì SQLë¡ ìì±íë ë°ìŽí°ë¥Œ ìì , í ìŽëž 구조 ë³ê²œë±ì ìì ì ê°ì²Žë¥Œ íµíŽ íë¡ê·žëë°ì ìŒë¡ í ì ìëë¡ íŽì£Œë ORM |
Knex | 쿌늬 ë¹ë륌 ìí ëŒìŽëžë¬ëŠ¬ |
GraphQL | API ì© ì¿ŒëŠ¬ ìžìŽìŽë©° êž°ì¡Ž ë°ìŽí°ë¡ ìŽë¬í 쿌늬륌 ìííêž°ìí ë°íì |
Typegoose | íì ì€í¬ëŠœíž íŽëì€ë¥Œ ì¬ì©íì¬ ëªœêµ¬ì€ ëªšëž ì ì |
Mikro ORM | ë°ìŽí° 맀íŒ, ìì ëšì ë° ììŽëŽí°í° 맵 íšíŽì êž°ë°ìŒë¡ íë Node.jsì© TypeScript ORM. MongoDB, MySQL, MariaDB, PostgreSQL ë° SQLite ë°ìŽí°ë² ìŽì€ë¥Œ ì§ì |
Node Postgres | PostgreSQL ë°ìŽí°ë² ìŽì€ì ìží°íìŽì€íêž° ìí node.js 몚ë |
ì¶í ê°ë° í í í늿
ìŽëŠ | ì€ëª |
---|---|
Sequelize Typescript | ë°ìœë ìŽí° ë° Sequelize륌 ìí ëª ê°ì§ êž°ë¥ |
TS SQL | SQL ë°ìŽí°ë² ìŽì€ë TypeScript ì í 죌ììŒë¡ ìì í 구í |
inversify-express-utils | InversifyJS륌 ì¬ì©í Express ì í늬ìŒìŽì ê°ë°ì ìí ìŒë¶ ì ížëŠ¬í° |
postgress Typescript | |
graphql-prisma |
ð Script ëª ë ¹ìŽ
- íë¡ëì
몚ë ì€í :
npm run start
ìëë©ŽStart typescript-express-starter
VS Code ë¡ - ê°ë° 몚ë ì€í :
npm run dev
ìëë©ŽDev typescript-express-starter
VS Code ë¡ - ëšì í
ì€íž :
npm test
ìëë©ŽTest typescript-express-starter
VS Code ë¡ - ìœë í¬ë§·í° ê²ì¬ :
npm run lint
ìëë©ŽLint typescript-express-starter
VS Code ë¡ - ìœë í¬ë§·í° ì ì© :
npm run lint:fix
ìëë©ŽLint:Fix typescript-express-starter
VS Code ë¡
ð íë¡ì íž êž°ë¥
ð³ Docker :: 컚í ìŽë íë«íŒ
Dockerë, 컚í ìŽë êž°ë°ì ì€íìì€ ê°ìí íë«íŒìŽë€.
ì€ì¹ ííìŽì§ì ì ìíŽì ì€ì¹ë¥Œ íŽì€ëë€.
- 백귞ëŒìŽëìì 컚í
ìŽë륌 ììíê³ ì€í :
docker-compose up -d
- 컚í
ìŽë륌 ì€ì§íê³ ì»ší
ìŽë, ë€ížìí¬, 볌륚 ë° ìŽë¯žì§ë¥Œ ì ê±° :
docker-compose down
ìì ì ìíìë©Ž docker-compose.yml
곌 Dockerfile
륌 ìì íŽì£Œìë©Ž ë©ëë€.
â»ïž Nginx :: ì¹ ìë²
Nginx ìë°©í¥ íë¡ì,ë¡ë ë°žë°ì, ë©ìŒ íë¡ì ë° HTTP ìºìë¡ë ì¬ì©í ììë ì¹ ìë²ì ëë€.
íë¡ìë ìŒë°ì ìŒë¡ ì¬ë¬ ìë²ìë¡ë륌 ë¶ì°íê±°ë, ë€ë¥ž ì¹ ì¬ìŽížì ìœí ìž ë¥Œ ìííê² íìíê±°ë, HTTP ìŽìžì íë¡í ìœì íµíŽ ì²ëŠ¬ ìì²ì ì í늬ìŒìŽì ìë²ì ì ë¬íë ë° ì¬ì©ë©ëë€.
Nginx ìì²ì íë¡ìíë©Ž ì§ì ë íë¡ì ìë²ë¡ ìì²ì 볎ëŽê³ ìëµì ê°ì ž ìì íŽëŒìŽìžížë¡ ë€ì 볎ë ëë€.
ìì ì ìíìë©Ž nginx.conf
íìŒì ìì íŽì£Œìë©Ž ë©ëë€.
âš ESLint, Prettier :: ì ì ìœë ë¶ì ë° ìœë ì€íìŒ ë³í
ESLintë JavaScript ìœëìì ë°ê²¬ ë 묞ì íšíŽì ìë³íêž°ìí ì ì ìœë ë¶ì ë구ì ëë€.
Prettierë ê°ë°ìê° ìì±í ìœë륌 ì íŽì§ ìœë© ì€íìŒì ë°ë¥Žëë¡ ë³ííŽì£Œë ë구ì ëë€.
ìœë륌 구묞 ë¶ìíê³ ìµë ì€ êžžìŽë¥Œ ê³ ë €íì¬ íìí ê²œì° ìœë륌 ëííë ì첎 ê·ì¹ìŒë¡ ë€ì ìžìíì¬ ìŒêŽë ì€íìŒì ì ì©í©ëë€.
ì€ì¹ê° ìë£ëë©Ž, ëšì¶í€
CMD
+Shift
+P
(Mac Os) ëëCtrl
+Shift
+P
(Windows) ì ë ¥í©ëë€.Format Selection With ì íí©ëë€.
Configure Default Formatter... ì íí©ëë€.
Prettier - Code formatter ì ì©í©ëë€.
2019ë , TSLint ì§ììŽ ì¢ ë£ ëìŽ ESLint륌 ì ì©íììµëë€.
ð Swagger :: API 묞ìí
Swaggerë ê°ë°ìê° REST ì¹ ìë¹ì€ë¥Œ ì€ê³, ë¹ë, 묞ìí, ìë¹íë ìŒì ëì죌ë ëí ë구 ìíê³ì ì§ìì ë°ë ì€í ìì€ ìíížìšìŽ íë ììí¬ìŽë€.
API륌 ëê·ëªšë¡ ì€ê³íê³ ë¬žìííë ë° ì©ìŽíê² ì¬ì©í©ëë€.
Swagger URLì http://localhost:3000/api-docs
ìŒë¡ ìì±íìµëë€.
ìì ì ìíìë©Ž swagger.yaml
íìŒì ìì íŽì£Œìë©Ž ë©ëë€.
ð REST Client :: HTTP Client ë구
REST íŽëŒìŽìžížë¥Œ ì¬ì©íë©Ž HTTP ìì²ì 볎ëŽê³ Visual Studio Codeìì ì§ì ìëµì 볌 ì ììµëë€.
VSCode Extensionìì REST Client ì€ì¹í©ëë€.
ìì ì ìíìë©Ž src/http íŽë ìì *.http
íìŒì ìì íŽì£Œìë©Ž ë©ëë€.
ð® PM2 :: ì¹ ì í늬ìŒìŽì ì ìŽì ë° íë¡ìžì€ êŽëŠ¬ì
PM2ë, ìë²ìì ì¹ ì í늬ìŒìŽì ì ìŽìí ë ë³Žíµ ë°ëª¬ìŒë¡ ìë²ë¥Œ ëììŒ íê³ Node.jsì ê²œì° ìë²ê° í¬ëìëë©Ž ì¬ììì íêž° ìíŽì ìì¹ë (watchdog) ë¥ì íë¡ìžì€ êŽëŠ¬ììŽë€.
- íë¡ëì
몚ë ::
npm run deploy:prod
ëëpm2 start ecosystem.config.js --only prod
- ê°ë° 몚ë ::
npm run deploy:dev
ëëpm2 start ecosystem.config.js --only dev
ìì ì ìíìë©Ž ecosystem.config.js
íìŒì ìì íŽì£Œìë©Ž ë©ëë€.
ð SWC :: ê°íê³ ë¹ ë¥ž ìë°ì€í¬ëŠœíž / íì ì€í¬ëŠœíž 컎íìŒë¬
SWCë ì°šìžë ê³ ì ê°ë°ì ë구륌 ìí íì¥ ê°ë¥í Rust êž°ë° íë«íŒì ëë€.
SWCë ëšìŒ ì€ë ëìì Babelë³Žë€ 20ë°°, 4ê° ìœìŽìì 70ë°° ë¹ ëŠ
ëë€.
- tsc ë¹ë ::
npm run build
- swc ë¹ë ::
npm run build:swc
ìì ì ìíìë©Ž .swcrc
íìŒì ìì íŽì£Œìë©Ž ë©ëë€.
ð Makefile :: Linuxìì ë°ë³µ ì ìŒë¡ ë°ìíë 컎íìŒì ìœê²íêž°ìíŽì ì¬ì©íë make íë¡ê·žëšì ì€ì íìŒ
- ëìë§ ::
make help
ìì ì ìíìë©Ž Makefile
íìŒì ìì íŽì£Œìë©Ž ë©ëë€.
ð ìœë 구조 (default)
â
âââð .vscode
â âââ launch.json
â âââ settings.json
â
âââð src
â âââð config
â â âââ index.ts
â â
â âââð controllers
â â âââ auth.controller.ts
â â âââ users.controller.ts
â â
â âââð dtos
â â âââ users.dto.ts
â â
â âââð exceptions
â â âââ httpException.ts
â â
â âââð http
â â âââ auth.http
â â âââ users.http
â â
â âââð interfaces
â â âââ auth.interface.ts
â â âââ routes.interface.ts
â â âââ users.interface.ts
â â
â âââð middlewares
â â âââ auth.middleware.ts
â â âââ error.middleware.ts
â â âââ validation.middleware.ts
â â
â âââð models
â â âââ users.model.ts
â â
â âââð routes
â â âââ auth.route.ts
â â âââ users.route.ts
â â
â âââð services
â â âââ auth.service.ts
â â âââ users.service.ts
â â
â âââð test
â â âââ auth.test.ts
â â âââ users.test.ts
â â
â âââð utils
â â âââ logger.ts
â â âââ vaildateEnv.ts
â â
â âââ app.ts
â âââ server.ts
â
âââ .dockerignore
âââ .editorconfig
âââ .env.development.local
âââ .env.production.local
âââ .env.test.local
âââ .eslintignore
âââ .eslintrc
âââ .gitignore
âââ .huskyrc
âââ .lintstagedrc.json
âââ .prettierrc
âââ .swcrc
âââ docker-compose.yml
âââ Dockerfile.dev
âââ Dockerfile.prod
âââ ecosystem.config.js
âââ jest.config.js
âââ Makefile
âââ nginx.conf
âââ nodemon.json
âââ package-lock.json
âââ package.json
âââ swagger.yaml
âââ tsconfig.json
âïž ììíŽì£Œì ë¶ë€
ðŽ ì°žê³ íìë ë¶ë€
ð€ ëì죌ì ë¶ë€
ð³ ëŒìŽì ì€
ð ì»€ë° ë©ìì§ ì ì
ìžì | ë©ìì§ |
---|---|
êž°ë¥ ì¶ê° | âš êž°ë¥ ì¶ê° |
ë²ê·ž ìì | ð ë²ê·ž ìì |
ìœë ê°ì | ð ìœë ê°ì |
íší€ì§ ì€ì¹ | ðŠ íší€ì§ ì€ì¹ |
묞ì ìì | ð 묞ì ìì |
ë²ì ì ë°ìŽíž | ðŒ ë²ì ì ë°ìŽíž |
ìë¡ìŽ í í늿 ì¶ê° | ð ìë¡ìŽ í í늿 ì¶ê° |
ð¬ ìŽì륌 ëšê²šì£Œìžì
걎ì ì¬íìŽë ì§ë¬ž ë±ì ìŽìë¡ ëšê²šì£Œìžì.
ìµì ì ë€íŽ ëµë³íê³ ë°ìíê² ìµëë€.
êŽì¬ì ê°ì žì£Œì ì ê°ì¬í©ëë€.
àŽŠàµàŽŠàŽ¿ËáË)
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago