2oneweek.dev

Express-TypeScript 설정

    Tags

  • Express
  • TypeScript

npm install

npm install dotenv express jsonwebtoken morgan mysql2 sequelize http-errors debug multer multer-s3 aws-sdk core-js cors

패키지

  • Express 기본설정

    • http-errors
    • debug
    • core-js
    • cors
    • express
    • morgan
  • Sequelize(Mysql)

    • mysql2
    • sequelize
  • 환경변수 관리

    • dotenv
  • NCP object storage

    • multer
    • multer-s3
    • aws-sdk
  • 암호화

    • jsonwebtoken

npm install -D

npm install -D @types/aws-sdk @types/core-js @types/cors @types/debug @types/dotenv @types/express @types/http-errors @types/jsonwebtoken @types/morgan @types/multer @types/multer-s3 @types/sequelize @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-airbnb-base eslint-config-prettier eslint-plugin-import eslint-plugin-prettier nodemon prettier typescript ts-node
  • TypeScript

    • typescript
    • ts-node
    • @types (type 정의를 위해 devDependency로 깔음)
  • EsLint

    npx eslint --init
    • eslint
    • eslint-config-airbnb-base
    • eslint-config-prettier
    • eslint-plugin-import
    • eslint-plugin-prettier
    • @typescript-eslint/eslint-plugin
    • @typescript-eslint/parser
  • Dev 서버 실행

    • nodemon
  • Prettier

    • prettier

Gitignore 설정

http://gitignore.io 에 접속하여 원하는 환경설정을 넣고 생성

  • ex) node react dotenv macOs windows

Babelrc.json 생성

파일이름 : .babelrc.json { "presets": ["@babel/preset-env"] }

Eslintrc.json 생성

npx eslint --init 파일이름 : .eslintrc.json { "env": { "node": true, "es2021": true }, "extends": ["airbnb-base", "eslint:recommended", "plugin:prettier/recommended"], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 12, "sourceType": "module" }, "plugins": ["@typescript-eslint", "prettier"], "rules": { "prettier/prettier": "error" } }

Prettierrc.json 생성

파일이름 : .prettierrc.json { "singleQuote": true, "semi": false, "tabWidth": 2, "useTabs": false, "trailingComma": "all", "printWidth": 80, "arrowParens": "always", "bracketSpacing": true }

Tsconfig.json 생성

// 이 명령어를 통해 init 가능 npx tsc --init 파일이름 : tsconfig.json { "compilerOptions": { "lib": ["es5", "es6"], "module": "commonjs", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "target": "es5", "noImplicitAny": true, "moduleResolution": "node", "sourceMap": true, "outDir": "./build", "baseUrl": ".", "paths": { "*": [ "node_modules/*", "src/types/*" ] } }, "include": [ "src/**/*" ] }

npm script

"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start":"tsc && node build/app.js", "dev": "nodemon --exec ts-node src/app.ts" },

app.js (간단.)

import express, { Request, Response } from 'express' class App { public application: express.Application constructor() { this.application = express() } } const app = new App().application app.get('/', (req: Request, res: Response) => { res.send('start') }) app.listen(3000, () => console.log('server listening 3000 port'))
  • cf) package.json

    { "name": "server", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start":"tsc && node build/app.js", "dev": "nodemon --exec ts-node src/app.ts" }, "author": "", "license": "ISC", "dependencies": { "aws-sdk": "2.793.0", "core-js": "3.7.0", "cors": "2.8.5", "debug": "4.2.0", "dotenv": "8.2.0", "express": "4.17.1", "http-errors": "1.8.0", "jsonwebtoken": "8.5.1", "morgan": "1.10.0", "multer": "1.4.2", "multer-s3": "2.9.0", "mysql2": "2.2.5", "sequelize": "6.3.5" }, "devDependencies": { "@types/aws-sdk": "2.7.0", "@types/core-js": "2.5.4", "@types/cors": "2.8.8", "@types/debug": "4.1.5", "@types/dotenv": "8.2.0", "@types/express": "4.17.9", "@types/http-errors": "1.8.0", "@types/jsonwebtoken": "8.5.0", "@types/morgan": "1.9.2", "@types/multer": "1.4.4", "@types/multer-s3": "2.7.8", "@types/sequelize": "4.28.9", "@typescript-eslint/eslint-plugin": "4.8.1", "@typescript-eslint/parser": "4.8.1", "eslint": "7.13.0", "eslint-config-airbnb-base": "14.2.1", "eslint-config-prettier": "6.15.0", "eslint-plugin-import": "2.22.1", "eslint-plugin-prettier": "3.1.4", "nodemon": "2.0.6", "prettier": "2.1.2", "ts-node": "9.0.0", "typescript": "4.0.5" } }

    참고자료

    node.js express + typescript + sequelize (ORM)

Written by@2-one-week
현재 블로그 개발 중

GitHubLinkedIn