Yarn2 & NestJS

codelab·2024년 1월 28일
0

Dev

목록 보기
7/9
post-thumbnail

NestJS + Yarn2

$ yarn global add @nestjs/cli
$ nest new api
$ cd api

Yarn2

$ yarn set version berry
$ yarn set version stable

$ yarn -v
4.02

$ vi .yarnrc.yml
cacheFolder: ./.yarn/cache
enableGlobalCache: false
enableScripts: false
nodeLinker: pnp
pnpMode: strict

$ yarn add --dev typescript @types/node nodemon

VS Code

# ZipFS extension 설치 후
# 타입/모듈 추론을 위한 yarn berry의 vscode 세팅
$ yarn dlx @yarnpkg/sdks vscode

# .ts 파일 열기 --> TypeScript: Select TypeScript Version 팝업 -> Allow
# 또는
# .ts 파일 열기 --> 맨위의 검색 창에서 > TypeScript: Select TypeScript Version 선택 --> sdk 버전(작업 영역) 선택

# .prettierrc
{
  "editor.formatOnSave": true,
  "arrowParens": "always",
  "bracketSameLine": true,
  "bracketSpacing": true,
  "embeddedLanguageFormatting": "auto",
  "endOfLine": "lf",
  "insertPragma": false,
  "printWidth": 100,
  "proseWrap": "preserve",
  "quoteProps": "as-needed",
  "requirePragma": false,
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "all",
  "useTabs": false,
  "vueIndentScriptAndStyle": false,
  "disableLanguages": []
}
$ vi .vscode/settings.json
{
  "search.exclude": {
    "**/.yarn": true,
    "**/.pnp.*": true
  },
  "eslint.nodePath": ".yarn/sdks",
  "typescript.tsdk": ".yarn/sdks/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true,

  # add
  "eslint.validate": [
    "typescript",
    "javascript",
  ],
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.fixAll.prettier": true
  },
  "editor.formatOnSave": true,
}

MonoRepo

nset generate app auth
nest generate app videos
nest generate app storage
nest generate app history

nest generate library common

# nest-cli.json 수정
{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "apps/api/src",
  "compilerOptions": {
    "deleteOutDir": true,
    "webpack": false, # 수정
    "tsConfigPath": "apps/api/tsconfig.app.json"
  },
  "monorepo": true,
  "root": "apps/api",
  "projects": {
    "api": {
      "type": "application",
      "root": "apps/api",
      "entryFile": "main",
      "sourceRoot": "apps/api/src",
      "compilerOptions": {
        "tsConfigPath": "apps/api/tsconfig.app.json"
      }
    },
    "auth": {
      "type": "application",
      "root": "apps/auth",
      "entryFile": "main",
      "sourceRoot": "apps/auth/src",
      "compilerOptions": {
        "tsConfigPath": "apps/auth/tsconfig.app.json"
      }
    }
    ...
  }
}

profile
Think about a better architecture

0개의 댓글