Installations
npm install typescript-express-starter
Developer Guide
Typescript
No
Module System
CommonJS
Min. Node Version
>= 10.13.0
Node Version
16.20.2
NPM Version
8.19.4
Score
74.3
Supply Chain
97.3
Quality
74.8
Maintenance
100
Vulnerability
98.6
License
Releases
Contributors
Unable to fetch Contributors
Languages
TypeScript (84.51%)
JavaScript (11.54%)
Makefile (3.93%)
Shell (0.03%)
validate.email 🚀
Verify real, reachable, and deliverable emails with instant MX records, SMTP checks, and disposable email detection.
Developer
Download Statistics
Total Downloads
71,091
Last Day
17
Last Week
99
Last Month
525
Last Year
11,067
GitHub Statistics
MIT License
2,788 Stars
491 Commits
425 Forks
30 Watchers
3 Branches
33 Contributors
Updated on Feb 25, 2025
Package Meta Information
Latest Version
10.2.1
Package Id
typescript-express-starter@10.2.1
Unpacked Size
483.40 kB
Size
50.76 kB
File Count
550
NPM Version
8.19.4
Node Version
16.20.2
Published on
Oct 04, 2023
Total Downloads
Cumulative downloads
Total Downloads
71,091
Last Day
88.9%
17
Compared to previous day
Last Week
3.1%
99
Compared to previous week
Last Month
-19.4%
525
Compared to previous month
Last Year
-40.3%
11,067
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
타입스크립트 익스프레스 스타터
🚀 타입스크립트 기반의 익스프레스 보일러 플레이트 스타터 패키지
😎 프로젝트를 소개합니다.
Express는 유형 정의에 취약한 JavaScript로 구성 되어있습니다.
이것이 바로 TypeScript를 도입하는 스타터 패키지로 수퍼 세트를 피하는 이유입니다.
패키지는 JavaScript 대신 TypeScript를 사용하도록 구성되어 있습니다.
🤔 Express는 무엇인가요 ?
Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크입니다.
🚀 시작하기
npm 전역 설치
1$ npm install -g typescript-express-starter
npx를 통해 프로젝트를 설치
프로젝트 이름을 입력하지 않으면, 기본값으로 typescript-express-starter 폴더로 설치됩니다.
1$ 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)
1│ 2├──📂 .vscode 3│ ├── launch.json 4│ └── settings.json 5│ 6├──📂 src 7│ ├──📂 config 8│ │ └── index.ts 9│ │ 10│ ├──📂 controllers 11│ │ ├── auth.controller.ts 12│ │ └── users.controller.ts 13│ │ 14│ ├──📂 dtos 15│ │ └── users.dto.ts 16│ │ 17│ ├──📂 exceptions 18│ │ └── httpException.ts 19│ │ 20│ ├──📂 http 21│ │ ├── auth.http 22│ │ └── users.http 23│ │ 24│ ├──📂 interfaces 25│ │ ├── auth.interface.ts 26│ │ ├── routes.interface.ts 27│ │ └── users.interface.ts 28│ │ 29│ ├──📂 middlewares 30│ │ ├── auth.middleware.ts 31│ │ ├── error.middleware.ts 32│ │ └── validation.middleware.ts 33│ │ 34│ ├──📂 models 35│ │ └── users.model.ts 36│ │ 37│ ├──📂 routes 38│ │ ├── auth.route.ts 39│ │ └── users.route.ts 40│ │ 41│ ├──📂 services 42│ │ ├── auth.service.ts 43│ │ └── users.service.ts 44│ │ 45│ ├──📂 test 46│ │ ├── auth.test.ts 47│ │ └── users.test.ts 48│ │ 49│ ├──📂 utils 50│ │ ├── logger.ts 51│ │ └── vaildateEnv.ts 52│ │ 53│ ├── app.ts 54│ └── server.ts 55│ 56├── .dockerignore 57├── .editorconfig 58├── .env.development.local 59├── .env.production.local 60├── .env.test.local 61├── .eslintignore 62├── .eslintrc 63├── .gitignore 64├── .huskyrc 65├── .lintstagedrc.json 66├── .prettierrc 67├── .swcrc 68├── docker-compose.yml 69├── Dockerfile.dev 70├── Dockerfile.prod 71├── ecosystem.config.js 72├── jest.config.js 73├── Makefile 74├── nginx.conf 75├── nodemon.json 76├── package-lock.json 77├── package.json 78├── swagger.yaml 79└── tsconfig.json
⭐️ 응원해주신 분들
🍴 참고하시는 분들
🤝 도움주신 분들
💳 라이선스
📑 커밋 메시지 정의
언제 | 메시지 |
---|---|
기능 추가 | ✨ 기능 추가 |
버그 수정 | 🐞 버그 수정 |
코드 개선 | 🛠 코드 개선 |
패키지 설치 | 📦 패키지 설치 |
문서 수정 | 📚 문서 수정 |
버전 업데이트 | 🌼 버전 업데이트 |
새로운 템플릿 추가 | 🎉 새로운 템플릿 추가 |
📬 이슈를 남겨주세요
건의 사항이나 질문 등을 이슈로 남겨주세요.
최선을 다해 답변하고 반영하겠습니다.
관심을 가져주셔서 감사합니다.
ദ്ദിˊᗜˋ)

No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
Found 7/11 approved changesets -- score normalized to 6
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: no topLevel permission defined: .github/workflows/publish.yml:1
- Info: no jobLevel write permissions found
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
branch protection not enabled on development/release branches
Details
- Warn: branch protection not enabled for branch 'master'
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 30 are checked with a SAST tool
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/ljlm0402/typescript-express-starter/publish.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ljlm0402/typescript-express-starter/publish.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/ljlm0402/typescript-express-starter/publish.yml/master?enable=pin
- Warn: containerImage not pinned by hash: lib/default/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/default/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/graphql/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/graphql/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/knex/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/knex/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/mikro-orm/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/mikro-orm/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/mongoose/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/mongoose/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/node-postgres/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/node-postgres/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/prisma/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/prisma/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/routing-controllers/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/routing-controllers/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/sequelize/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/sequelize/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/typegoose/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/typegoose/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/typeorm/Dockerfile.dev:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: containerImage not pinned by hash: lib/typeorm/Dockerfile.prod:2: pin your Docker image by updating node:16.18-buster-slim to node:16.18-buster-slim@sha256:4957579844d80f2cc77f5696e981d3ebf6446a31007c925eeb75a66ec7a39c50
- Warn: npmCommand not pinned by hash: lib/default/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/default/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/graphql/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/graphql/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/knex/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/knex/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/mikro-orm/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/mikro-orm/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/mongoose/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/mongoose/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/node-postgres/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/node-postgres/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/prisma/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/prisma/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/routing-controllers/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/routing-controllers/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/sequelize/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/sequelize/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/typegoose/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/typegoose/Dockerfile.prod:11
- Warn: npmCommand not pinned by hash: lib/typeorm/Dockerfile.dev:11
- Warn: npmCommand not pinned by hash: lib/typeorm/Dockerfile.prod:11
- Info: 0 out of 2 GitHub-owned GitHubAction dependencies pinned
- Info: 0 out of 1 third-party GitHubAction dependencies pinned
- Info: 0 out of 22 containerImage dependencies pinned
- Info: 0 out of 22 npmCommand dependencies pinned
Score
4
/10
Last Scanned on 2025-02-17
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn MoreOther packages similar to typescript-express-starter
typescript-express-mongoose-starter
TypeScript + Express + Mongoose + MongoDB
neura-express-app
Basic express application starter with some common utilities.
@tgargula/express-typescript-starter
This is a simple Express Typescript server generator with precofigured linter and code formatter
express-typescript-s3-starter
express, typeorm, typescript restful starter kit with authentication & s3 support