10.2.1 • Published 1 year ago

typescript-express-starter v10.2.1

Weekly downloads
232
License
MIT
Repository
github
Last release
1 year ago

😎 프로젝튞륌 소개합니닀.

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 명령얎륌 통핎 프로젝튞륌 싀행합니닀.

템플늿 종류

읎늄섀명
DefaultExpress Ʞ볞
routing controllers데윔레읎터 사용량읎 많은 구조화되고 선얞적읎며 아늄답게 구성된 큎래슀 êž°ë°˜ 컚튞례러 생성
SequelizePostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server륌 지원하는 Promise 팹턮 Ʞ반의 Node.js ORM
MongooseNode.js와 MongoDB륌 위한 ODM(Object Data Mapping) 띌읎람러늬
TypeORM자바슀크늜튞, 타입슀크늜튞곌 핚께 사용되얎 Node.js, React Native, Expo에서 싀행될 수 있는 ORM
Prisma데읎터베읎슀에 데읎터륌 프로귞래밍 얞얎의 객첎와 맀핑하여 Ʞ졎에 SQL로 작성하던 데읎터륌 수정, 테읎랔 구조 변겜등의 작업을 객첎륌 통핎 프로귞래밍적윌로 할 수 있도록 핎죌는 ORM
Knex쿌늬 빌더륌 위한 띌읎람러늬
GraphQLAPI 용 쿌늬 얞얎읎며 êž°ì¡Ž 데읎터로 읎러한 쿌늬륌 수행하Ʞ위한 런타임
Typegoose타입슀크늜튞 큎래슀륌 사용하여 몜구슀 몚덞 정의
Mikro ORM데읎터 맀퍌, 작업 닚위 및 아읎덎티티 맵 팚턎을 Ʞ반윌로 하는 Node.js용 TypeScript ORM. MongoDB, MySQL, MariaDB, PostgreSQL 및 SQLite 데읎터베읎슀륌 지원
Node PostgresPostgreSQL 데읎터베읎슀와 읞터페읎슀하Ʞ 위한 node.js 몚듈

추후 개발 할 템플늿

읎늄섀명
Sequelize Typescript데윔레읎터 및 Sequelize륌 위한 몇 가지 Ʞ능
TS SQLSQL 데읎터베읎슀는 TypeScript 유형 죌석윌로 순전히 구현
inversify-express-utilsInversifyJS륌 사용한 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는 개발자가 작성한 윔드륌 정핎진 윔딩 슀타음을 따륎도록 변환핎죌는 도구입니닀.

윔드륌 구묞 분석하고 최대 쀄 Ꞟ읎륌 고렀하여 필요한 겜우 윔드륌 래핑하는 자첎 규칙윌로 닀시 읞쇄하여 음ꎀ된 슀타음을 적용합니닀.

  1. VSCode Extension에서 Prettier, ESLint 섀치합니닀.

  2. 섀치가 완료되멎, 닚축킀 CMD + Shift + P (Mac Os) 또는 Ctrl + Shift + P (Windows) 입력합니닀.

  3. Format Selection With 선택합니닀.

  4. Configure Default Formatter... 선택합니닀.

  5. 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

⭐ 응원핎죌신 분듀

Stargazers repo roster for @ljlm0402/typescript-express-starter

🍎 찞고하시는 분듀

Forkers repo roster for @ljlm0402/typescript-express-starter

🀝 도움죌신 분듀

Contributors repo roster for @ljlm0402/typescript-express-starter

💳 띌읎선슀

MIT

📑 컀밋 메시지 정의

얞제메시지
Ʞ능 추가✚ Ʞ능 추가
버귞 수정🐞 버귞 수정
윔드 개선🛠 윔드 개선
팚킀지 섀치📊 팚킀지 섀치
묞서 수정📚 묞서 수정
버전 업데읎튞🌌 버전 업데읎튞
새로욎 템플늿 추가🎉 새로욎 템플늿 추가

📬 읎슈륌 낚겚죌섞요

걎의 사항읎나 질묞 등을 읎슈로 낚겚죌섞요.

최선을 닀핎 답변하고 반영하겠습니닀.

ꎀ심을 가젞죌셔서 감사합니닀.

àŽŠàµàŽŠàŽ¿ËŠá—œË‹)

10.0.1

1 year ago

10.2.1

1 year ago

10.1.1

1 year ago

10.0.0

2 years ago

9.1.2

3 years ago

9.2.0

2 years ago

9.1.1

3 years ago

9.1.0

3 years ago

8.1.7

3 years ago

8.1.3

3 years ago

9.0.0

3 years ago

6.3.0

3 years ago

8.1.2

3 years ago

7.0.0

3 years ago

8.0.1

3 years ago

8.0.0

3 years ago

8.0.2

3 years ago

6.2.1

3 years ago

6.2.0

3 years ago

6.1.0

3 years ago

6.0.0

3 years ago

5.1.3

3 years ago

5.1.2

3 years ago

5.0.2

3 years ago

4.3.1

4 years ago

4.2.2

4 years ago

4.3.0

4 years ago

4.2.1

4 years ago

4.2.0

4 years ago

4.1.1

4 years ago

4.0.1

4 years ago

3.3.2

4 years ago

3.2.2

4 years ago

3.2.1

4 years ago

3.2.0

4 years ago

3.1.0

4 years ago

3.0.0

4 years ago

2.8.3

4 years ago

2.7.3

4 years ago

2.7.2

4 years ago

2.7.1

4 years ago

2.7.0

4 years ago

2.6.5

4 years ago

2.5.5

4 years ago

2.5.4

5 years ago

2.4.4

5 years ago

2.4.3

5 years ago

2.3.3

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

2.3.0

5 years ago

2.2.4

5 years ago

2.2.3

5 years ago

2.2.2

5 years ago

2.2.1

5 years ago

2.2.0

5 years ago

2.1.0

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.4

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

1.0.3

5 years ago

0.0.0

5 years ago