ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Typescript 기본 세팅
    Language/Typescript 2022. 12. 26. 22:13

    Typescript 기본 세팅

    1. 시작

    • npm init-y

    2. 필수 모듈 설치

    • 로컬 환경에서만 사용하는 모듈은 -D 옵션을 추가하여 설치한다.
    • @type/* : 자바스크립트 환경에서 구동되는 모듈을 TS 환경에서 사용하기 위해 내부 변수들과 함수들의 타입을 정의한 *.d.ts파일이 포함된 패키지도 함께 설치한다.
    {
    "name": "project_name",
      "version": "1.0.0",
      "description": "",
      "main": "server.js",
      "jest": {
        "setupFiles": [
          "dotenv/config"
        ]
      },
      "scripts": {
        "test": "DOTENV_CONFIG_PATH=.env.test jest --setupFiles=dotenv/config",
        "test:coverage": "DOTENV_CONFIG_PATH=.env.test jest --setupFiles=dotenv/config --coverage",
        "prestart": "tsc",
        "start": "nodemon ./dist/server.js",
    		"dev": "nodemon --exec ts-node --files ./api/server.ts" 
    		// 경로는 node_modules나 package.json이 설치된 위치가 기준
    		// --watch 'api/**/*.ts'라는 문장이 포함되기도 하는데 이는 package.json과 api가 같은 디렉토리 내에 위치하고 ts 확장자를 가진 api 하위의 모든 파일을 컴파일 할 것을 뜻한다.
      },
    "dependencies": {
        "cors": "^2.8.5",
        "dbmate": "^1.0.3",
        "dotenv": "^16.0.3",
        "express": "^4.18.2",
        "express-async-errors": "^3.1.1",
        "morgan": "^1.10.0",
        "mysql2": "^2.3.3",
        "redis": "^4.5.1",
        "typeorm": "^0.3.10"
      },
      "devDependencies": {
        "@types/cors": "^2.8.13",
        "@types/express": "^4.17.15",
        "@types/morgan": "^1.9.3",
        "@types/node": "^18.11.15",
        "jest": "^29.3.1",
        "prettier": "2.7.1",
        "supertest": "^6.3.1",
        "ts-node": "^10.9.1",
        "typescript": "^4.9.4"
      }
    }
    
    • 만약 @type 버젼이 없는 경우, root 디렉토리에 @type/*.d.ts 경로로 파일을 직접 만들어 선언한다.
    //예시 @type/express-async-errors.d.ts
    declare module 'express-async-errors';
    

    TS 시작

    1. 시작

    • tsc —init : ts가 설치되어 있다면 실행 가능하고 tsconfig.ts 파일이 생성된다.

    2. tsconfig.ts

    • 컴파일 옵션 정리
    // 참고 : <https://geonlee.tistory.com/214>
    {
      "compilerOptions": {
        /* <https://aka.ms/tsconfig.json> 를 방문하면 해당 파일에 대한 더 많은 정보를 얻을 수 있습니다. */
     
        // 옵션은 아래와 같은 형식으로 구성되어 있습니다.
        // "모듈 키": 모듈 값                        /* 설명: 사용가능 옵션 (설명이 "~ 여부"인 경우 'true', 'false') */
     
        /* 기본 옵션 */
        // "incremental": true,                   /* 증분 컴파일 설정 여부 */
        "target": "es5",                          /* 사용할 특정 ECMAScript 버전 설정: 'ES3' (기본), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 혹은 'ESNEXT'. */
        "module": "commonjs",                     /* 모듈을 위한 코드 생성 설정: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
        // "lib": [],                             /* 컴파일에 포함될 라이브러리 파일 목록 */
        // "allowJs": true,                       /* 자바스크립트 파일 컴파일 허용 여부 */
        // "checkJs": true,                       /* .js 파일의 오류 검사 여부 */
        // "jsx": "preserve",                     /* JSX 코드 생성 설정: 'preserve', 'react-native', 혹은 'react'. */
        // "declaration": true,                   /* '.d.ts' 파일 생성 여부. */
        // "declarationMap": true,                /* 각 '.d.ts' 파일의 소스맵 생성 여부. */
        // "sourceMap": true,                     /* '.map' 파일 생성 여부. */
        // "outFile": "./",                       /* 단일 파일로 합쳐서 출력합니다. */
        // "outDir": "./",                        /* 해당 디렉토리로 결과 구조를 보냅니다. */
        // "rootDir": "./",                       /* 입력 파일의 루트 디렉토리(rootDir) 설정으로 --outDir로 결과 디렉토리 구조를 조작할 때 사용됩니다. */
        // "composite": true,                     /* 프로젝트 컴파일 여부 */
        // "tsBuildInfoFile": "./",               /* 증분 컴파일 정보를 저장할 파일 */
        // "removeComments": true,                /* 주석 삭제 여부 */
        // "noEmit": true,                        /* 결과 파일 내보낼지 여부 */
        // "importHelpers": true,                 /* 'tslib'에서 헬퍼를 가져올 지 여부 */
        // "downlevelIteration": true,            /* 타겟이 'ES5', 'ES3'일 때에도 'for-of', spread 그리고 destructuring 문법 모두 지원 */
        // "isolatedModules": true,               /* 각 파일을 분리된 모듈로 트랜스파일 ('ts.transpileModule'과 비슷합니다). */
     
        /* 엄격한 타입-확인 옵션 */
        "strict": true,                           /* 모든 엄격한 타입-체킹 옵션 활성화 여부 */
        // "noImplicitAny": true,                 /* 'any' 타입으로 구현된 표현식 혹은 정의 에러처리 여부 */
        // "strictNullChecks": true,              /* 엄격한 null 확인 여부 */
        // "strictFunctionTypes": true,           /* 함수 타입에 대한 엄격한 확인 여부 */
        // "strictBindCallApply": true,           /* 함수에 엄격한 'bind', 'call' 그리고 'apply' 메소드 사용 여부 */
        // "strictPropertyInitialization": true,  /* 클래스의 값 초기화에 엄격한 확인 여부 */
        // "noImplicitThis": true,                /* 'any' 타입으로 구현된 'this' 표현식 에러처리 여부 */
        // "alwaysStrict": true,                  /* strict mode로 분석하고 모든 소스 파일에 "use strict"를 추가할 지 여부 */
     
        /* 추가적인 확인 */
        // "noUnusedLocals": true,                /* 사용되지 않은 지역 변수에 대한 에러보고 여부 */
        // "noUnusedParameters": true,            /* 사용되지 않은 파라미터에 대한 에러보고 여부 */
        // "noImplicitReturns": true,             /* 함수에서 코드의 모든 경로가 값을 반환하지 않을 시 에러보고 여부 */
        // "noFallthroughCasesInSwitch": true,    /* switch문에서 fallthrough 케이스에 대한 에러보고 여부 */
     
        /* 모듈 해석 옵션 */
        // "moduleResolution": "node",            /* 모듈 해석 방법 설정: 'node' (Node.js) 혹은 'classic' (TypeScript pre-1.6). */
        // "baseUrl": "./",                       /* non-absolute한 모듈 이름을 처리할 기준 디렉토리 */
        // "paths": {},                           /* 'baseUrl'를 기준으로 불러올 모듈의 위치를 재지정하는 엔트리 시리즈 */
        // "rootDirs": [],                        /* 결합된 컨텐츠가 런타임에서의 프로젝트 구조를 나타내는 루트 폴더들의 목록 */
        // "typeRoots": [],                       /* 타입 정의를 포함할 폴더 목록, 설정 안 할 시 기본적으로 ./node_modules/@types로 설정 */
        // "types": [],                           /* 컴파일중 포함될 타입 정의 파일 목록 */
        // "allowSyntheticDefaultImports": true,  /* default export이 아닌 모듈에서도 default import가 가능하게 할 지 여부, 해당 설정은 코드 추출에 영향은 주지 않고, 타입확인에만 영향을 줍니다. */
        "esModuleInterop": true,                  /* 모든 imports에 대한 namespace 생성을 통해 CommonJS와 ES Modules 간의 상호 운용성이 생기게할 지 여부,  'allowSyntheticDefaultImports'를 암시적으로 승인합니다. */
        // "preserveSymlinks": true,              /* symlik의 실제 경로를 처리하지 않을 지 여부 */
        // "allowUmdGlobalAccess": true,          /* UMD 전역을 모듈에서 접근할 수 있는 지 여부 */
     
        /* 소스 맵 옵션 */
        // "sourceRoot": "",                      /* 소스 위치 대신 디버거가 알아야 할 TypeScript 파일이 위치할 곳 */
        // "mapRoot": "",                         /* 생성된 위치 대신 디버거가 알아야 할 맵 파일이 위치할 곳 */
        // "inlineSourceMap": true,               /* 분리된 파일을 가지고 있는 대신, 단일 파일을 소스 맵과 가지고 있을 지 여부 */
        // "inlineSources": true,                 /* 소스맵과 나란히 소스를 단일 파일로 내보낼 지 여부, '--inlineSourceMap' 혹은 '--sourceMap'가 설정되어 있어야 한다. */
     
        /* 실험적 옵션 */
        // "experimentalDecorators": true,        /* ES7의 decorators에 대한 실험적 지원 여부 */
        // "emitDecoratorMetadata": true,         /* decorator를 위한 타입 메타데이터를 내보내는 것에 대한 실험적 지원 여부 */
     
        /* 추가적 옵션 */
        "skipLibCheck": true,                     /* 정의 파일의 타입 확인을 건너 뛸 지 여부 */
        "forceConsistentCasingInFileNames": true  /* 같은 파일에 대한 일관되지 않은 참조를 허용하지 않을 지 여부 */
      }
    }
    
    • 나의 compile option
    {
      "exclude": ["./tts", "./dist/**/*"], // 컴파일에서 제외할 디렉토리를 설정한다.
      "compilerOptions": {
        "incremental": true,
        "composite": true,
        "target": "es6",
        "module": "commonjs",
        "rootDir": "./api",
        "moduleResolution": "node",
        "typeRoots": ["./node_modules/@types", "./@types"],
        "allowJs": true,
        "checkJs": true,
        "declaration": true,
        "declarationMap": true,
        "sourceMap": true,
        "outDir": "./dist",
        "removeComments": true,
        "allowSyntheticDefaultImports": true,
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "strict": true,
        "skipLibCheck": true
      }
    }
    

    기타

    1. gitignore

    # Created by <https://www.toptal.com/developers/gitignore/api/python,pycharm,visualstudio,visualstudiocode,vim,macos,zsh,linux>
    # Edit at <https://www.toptal.com/developers/gitignore?templates=python,pycharm,visualstudio,visualstudiocode,vim,macos,zsh,linux>
    
    ssml
    result
    textFile
    *.rdb
    
    # typescript cache
    *.tsbuildinfo
    
    ### Linux ###
    *~
    
    # temporary files which can be created if a process still has a handle open of a deleted file
    .fuse_hidden*
    
    # KDE directory preferences
    .directory
    
    # Linux trash folder which might appear on any partition or disk
    .Trash-*
    
    # .nfs files are created when an open file is removed but is still being accessed
    .nfs*
    
    ### macOS ###
    # General
    .DS_Store
    .AppleDouble
    .LSOverride
    
    # Icon must end with two \\r
    Icon
    
    # Thumbnails
    ._*
    
    # Files that might appear in the root of a volume
    .DocumentRevisions-V100
    .fseventsd
    .Spotlight-V100
    .TemporaryItems
    .Trashes
    .VolumeIcon.icns
    .com.apple.timemachine.donotpresent
    
    # Directories potentially created on remote AFP share
    .AppleDB
    .AppleDesktop
    Network Trash Folder
    Temporary Items
    .apdisk
    
    ### PyCharm ###
    # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
    # Reference: <https://intellij-support.jetbrains.com/hc/en-us/articles/206544839>
    
    # User-specific stuff
    .idea/**/workspace.xml
    .idea/**/tasks.xml
    .idea/**/usage.statistics.xml
    .idea/**/dictionaries
    .idea/**/shelf
    
    # AWS User-specific
    .idea/**/aws.xml
    
    # Generated files
    .idea/**/contentModel.xml
    
    # Sensitive or high-churn files
    .idea/**/dataSources/
    .idea/**/dataSources.ids
    .idea/**/dataSources.local.xml
    .idea/**/sqlDataSources.xml
    .idea/**/dynamic.xml
    .idea/**/uiDesigner.xml
    .idea/**/dbnavigator.xml
    
    # Gradle
    .idea/**/gradle.xml
    .idea/**/libraries
    
    # Gradle and Maven with auto-import
    # When using Gradle or Maven with auto-import, you should exclude module files,
    # since they will be recreated, and may cause churn.  Uncomment if using
    # auto-import.
    # .idea/artifacts
    # .idea/compiler.xml
    # .idea/jarRepositories.xml
    # .idea/modules.xml
    # .idea/*.iml
    # .idea/modules
    # *.iml
    # *.ipr
    
    # CMake
    cmake-build-*/
    
    # Mongo Explorer plugin
    .idea/**/mongoSettings.xml
    
    # File-based project format
    *.iws
    
    # IntelliJ
    out/
    
    # mpeltonen/sbt-idea plugin
    .idea_modules/
    
    # JIRA plugin
    atlassian-ide-plugin.xml
    
    # Cursive Clojure plugin
    .idea/replstate.xml
    
    # Crashlytics plugin (for Android Studio and IntelliJ)
    com_crashlytics_export_strings.xml
    crashlytics.properties
    crashlytics-build.properties
    fabric.properties
    
    # Editor-based Rest Client
    .idea/httpRequests
    
    # Android studio 3.1+ serialized cache file
    .idea/caches/build_file_checksums.ser
    
    ### PyCharm Patch ###
    # Comment Reason: <https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721>
    
    # *.iml
    # modules.xml
    # .idea/misc.xml
    # *.ipr
    
    # Sonarlint plugin
    # <https://plugins.jetbrains.com/plugin/7973-sonarlint>
    .idea/**/sonarlint/
    
    # SonarQube Plugin
    # <https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin>
    .idea/**/sonarIssues.xml
    
    # Markdown Navigator plugin
    # <https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced>
    .idea/**/markdown-navigator.xml
    .idea/**/markdown-navigator-enh.xml
    .idea/**/markdown-navigator/
    
    # Cache file creation bug
    # See <https://youtrack.jetbrains.com/issue/JBR-2257>
    .idea/$CACHE_FILE$
    
    # CodeStream plugin
    # <https://plugins.jetbrains.com/plugin/12206-codestream>
    .idea/codestream.xml
    
    ### Python ###
    # Byte-compiled / optimized / DLL files
    __pycache__/
    *.py[cod]
    *$py.class
    
    # C extensions
    *.so
    
    # Distribution / packaging
    .Python
    build/
    develop-eggs/
    dist/
    downloads/
    eggs/
    .eggs/
    lib/
    lib64/
    parts/
    sdist/
    var/
    wheels/
    share/python-wheels/
    *.egg-info/
    .installed.cfg
    *.egg
    MANIFEST
    
    # PyInstaller
    #  Usually these files are written by a python script from a template
    #  before PyInstaller builds the exe, so as to inject date/other infos into it.
    *.manifest
    *.spec
    
    # Installer logs
    pip-log.txt
    pip-delete-this-directory.txt
    
    # Unit test / coverage reports
    htmlcov/
    .tox/
    .nox/
    .coverage
    .coverage.*
    .cache
    nosetests.xml
    coverage.xml
    *.cover
    *.py,cover
    .hypothesis/
    .pytest_cache/
    cover/
    coverage
    
    # Translations
    *.mo
    *.pot
    
    # Django stuff:
    *.log
    local_settings.py
    db.sqlite3
    db.sqlite3-journal
    
    # Flask stuff:
    instance/
    .webassets-cache
    
    # Scrapy stuff:
    .scrapy
    
    # Sphinx documentation
    docs/_build/
    
    # PyBuilder
    .pybuilder/
    target/
    
    # Jupyter Notebook
    .ipynb_checkpoints
    
    # IPython
    profile_default/
    ipython_config.py
    
    # pyenv
    #   For a library or package, you might want to ignore these files since the code is
    #   intended to run in multiple environments; otherwise, check them in:
    # .python-version
    
    # pipenv
    #   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
    #   However, in case of collaboration, if having platform-specific dependencies or dependencies
    #   having no cross-platform support, pipenv may install dependencies that don't work, or not
    #   install all needed dependencies.
    #Pipfile.lock
    
    # PEP 582; used by e.g. github.com/David-OConnor/pyflow
    __pypackages__/
    
    # Celery stuff
    celerybeat-schedule
    celerybeat.pid
    
    # SageMath parsed files
    *.sage.py
    
    # Environments
    .env
    .env.test
    .venv
    env/
    venv/
    ENV/
    env.bak/
    venv.bak/
    .env.test
    
    # Spyder project settings
    .spyderproject
    .spyproject
    
    # Rope project settings
    .ropeproject
    
    # mkdocs documentation
    /site
    
    # mypy
    .mypy_cache/
    .dmypy.json
    dmypy.json
    
    # Pyre type checker
    .pyre/
    
    # pytype static type analyzer
    .pytype/
    
    # Cython debug symbols
    cython_debug/
    
    ### Vim ###
    # Swap
    [._]*.s[a-v][a-z]
    !*.svg  # comment out if you don't need vector files
    [._]*.sw[a-p]
    [._]s[a-rt-v][a-z]
    [._]ss[a-gi-z]
    [._]sw[a-p]
    
    # Session
    Session.vim
    Sessionx.vim
    
    # Temporary
    .netrwhist
    # Auto-generated tag files
    tags
    # Persistent undo
    [._]*.un~
    
    ### VisualStudioCode ###
    .vscode/*
    !.vscode/settings.json
    !.vscode/tasks.json
    !.vscode/launch.json
    !.vscode/extensions.json
    *.code-workspace
    
    # Local History for Visual Studio Code
    .history/
    
    ### VisualStudioCode Patch ###
    # Ignore all local history of files
    .history
    .ionide
    
    ### Zsh ###
    # Zsh compiled script + zrecompile backup
    *.zwc
    *.zwc.old
    
    # Zsh completion-optimization dumpfile
    *zcompdump*
    
    # Zsh zcalc history
    .zcalc_history
    
    # A popular plugin manager's files
    ._zinit
    .zinit_lstupd
    
    # zdharma/zshelldoc tool's files
    zsdoc/data
    
    # robbyrussell/oh-my-zsh/plugins/per-directory-history plugin's files
    # (when set-up to store the history in the local directory)
    .directory_history
    
    # MichaelAquilina/zsh-autoswitch-virtualenv plugin's files
    # (for Zsh plugins using Python)
    
    # Zunit tests' output
    /tests/_output/*
    !/tests/_output/.gitkeep
    
    ### VisualStudio ###
    ## Ignore Visual Studio temporary files, build results, and
    ## files generated by popular Visual Studio add-ons.
    ##
    ## Get latest from <https://github.com/github/gitignore/blob/master/VisualStudio.gitignore>
    
    # User-specific files
    *.rsuser
    *.suo
    *.user
    *.userosscache
    *.sln.docstates
    
    # User-specific files (MonoDevelop/Xamarin Studio)
    *.userprefs
    
    # Mono auto generated files
    mono_crash.*
    
    # Build results
    [Dd]ebug/
    [Dd]ebugPublic/
    [Rr]elease/
    [Rr]eleases/
    x64/
    x86/
    [Ww][Ii][Nn]32/
    [Aa][Rr][Mm]/
    [Aa][Rr][Mm]64/
    bld/
    [Bb]in/
    [Oo]bj/
    [Ll]og/
    [Ll]ogs/
    
    # Visual Studio 2015/2017 cache/options directory
    .vs/
    # Uncomment if you have tasks that create the project's static files in wwwroot
    #wwwroot/
    
    # Visual Studio 2017 auto generated files
    Generated\\ Files/
    
    # MSTest test Results
    [Tt]est[Rr]esult*/
    [Bb]uild[Ll]og.*
    
    # NUnit
    *.VisualState.xml
    TestResult.xml
    nunit-*.xml
    
    # Build Results of an ATL Project
    [Dd]ebugPS/
    [Rr]eleasePS/
    dlldata.c
    
    # Benchmark Results
    BenchmarkDotNet.Artifacts/
    
    # .NET Core
    project.lock.json
    project.fragment.lock.json
    artifacts/
    
    # ASP.NET Scaffolding
    ScaffoldingReadMe.txt
    
    # StyleCop
    StyleCopReport.xml
    
    # Files built by Visual Studio
    *_i.c
    *_p.c
    *_h.h
    *.ilk
    *.meta
    *.obj
    *.iobj
    *.pch
    *.pdb
    *.ipdb
    *.pgc
    *.pgd
    *.rsp
    *.sbr
    *.tlb
    *.tli
    *.tlh
    *.tmp
    *.tmp_proj
    *_wpftmp.csproj
    *.tlog
    *.vspscc
    *.vssscc
    .builds
    *.pidb
    *.svclog
    *.scc
    
    # Chutzpah Test files
    _Chutzpah*
    
    # Visual C++ cache files
    ipch/
    *.aps
    *.ncb
    *.opendb
    *.opensdf
    *.sdf
    *.cachefile
    *.VC.db
    *.VC.VC.opendb
    
    # Visual Studio profiler
    *.psess
    *.vsp
    *.vspx
    *.sap
    
    # Visual Studio Trace Files
    *.e2e
    
    # TFS 2012 Local Workspace
    $tf/
    
    # Guidance Automation Toolkit
    *.gpState
    
    # ReSharper is a .NET coding add-in
    _ReSharper*/
    *.[Rr]e[Ss]harper
    *.DotSettings.user
    
    # TeamCity is a build add-in
    _TeamCity*
    
    # DotCover is a Code Coverage Tool
    *.dotCover
    
    # AxoCover is a Code Coverage Tool
    .axoCover/*
    !.axoCover/settings.json
    
    # Coverlet is a free, cross platform Code Coverage Tool
    coverage*.json
    coverage*.xml
    coverage*.info
    
    # Visual Studio code coverage results
    *.coverage
    *.coveragexml
    
    # NCrunch
    _NCrunch_*
    .*crunch*.local.xml
    nCrunchTemp_*
    
    # MightyMoose
    *.mm.*
    AutoTest.Net/
    
    # Web workbench (sass)
    .sass-cache/
    
    # Installshield output folder
    [Ee]xpress/
    
    # DocProject is a documentation generator add-in
    DocProject/buildhelp/
    DocProject/Help/*.HxT
    DocProject/Help/*.HxC
    DocProject/Help/*.hhc
    DocProject/Help/*.hhk
    DocProject/Help/*.hhp
    DocProject/Help/Html2
    DocProject/Help/html
    
    # Click-Once directory
    publish/
    
    # Publish Web Output
    *.[Pp]ublish.xml
    *.azurePubxml
    # Note: Comment the next line if you want to checkin your web deploy settings,
    # but database connection strings (with potential passwords) will be unencrypted
    *.pubxml
    *.publishproj
    
    # Microsoft Azure Web App publish settings. Comment the next line if you want to
    # checkin your Azure Web App publish settings, but sensitive information contained
    # in these scripts will be unencrypted
    PublishScripts/
    
    # NuGet Packages
    *.nupkg
    # NuGet Symbol Packages
    *.snupkg
    # The packages folder can be ignored because of Package Restore
    **/[Pp]ackages/*
    # except build/, which is used as an MSBuild target.
    !**/[Pp]ackages/build/
    # Uncomment if necessary however generally it will be regenerated when needed
    #!**/[Pp]ackages/repositories.config
    # NuGet v3's project.json files produces more ignorable files
    *.nuget.props
    *.nuget.targets
    
    # Nuget personal access tokens and Credentials
    nuget.config
    
    # Microsoft Azure Build Output
    csx/
    *.build.csdef
    
    # Microsoft Azure Emulator
    ecf/
    rcf/
    
    # Windows Store app package directories and files
    AppPackages/
    BundleArtifacts/
    Package.StoreAssociation.xml
    _pkginfo.txt
    *.appx
    *.appxbundle
    *.appxupload
    
    # Visual Studio cache files
    # files ending in .cache can be ignored
    *.[Cc]ache
    # but keep track of directories ending in .cache
    !?*.[Cc]ache/
    
    # Others
    ClientBin/
    ~$*
    *.dbmdl
    *.dbproj.schemaview
    *.jfm
    *.pfx
    *.publishsettings
    orleans.codegen.cs
    
    # Including strong name files can present a security risk
    # (<https://github.com/github/gitignore/pull/2483#issue-259490424>)
    #*.snk
    
    # Since there are multiple workflows, uncomment next line to ignore bower_components
    # (<https://github.com/github/gitignore/pull/1529#issuecomment-104372622>)
    #bower_components/
    
    # RIA/Silverlight projects
    Generated_Code/
    
    # Backup & report files from converting an old project file
    # to a newer Visual Studio version. Backup files are not needed,
    # because we have git ;-)
    _UpgradeReport_Files/
    Backup*/
    UpgradeLog*.XML
    UpgradeLog*.htm
    ServiceFabricBackup/
    *.rptproj.bak
    
    # SQL Server files
    *.mdf
    *.ldf
    *.ndf
    
    # Business Intelligence projects
    *.rdl.data
    *.bim.layout
    *.bim_*.settings
    *.rptproj.rsuser
    *- [Bb]ackup.rdl
    *- [Bb]ackup ([0-9]).rdl
    *- [Bb]ackup ([0-9][0-9]).rdl
    
    # Microsoft Fakes
    FakesAssemblies/
    
    # GhostDoc plugin setting file
    *.GhostDoc.xml
    
    # Node.js Tools for Visual Studio
    .ntvs_analysis.dat
    node_modules/
    
    # Visual Studio 6 build log
    *.plg
    
    # Visual Studio 6 workspace options file
    *.opt
    
    # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
    *.vbw
    
    # Visual Studio LightSwitch build output
    **/*.HTMLClient/GeneratedArtifacts
    **/*.DesktopClient/GeneratedArtifacts
    **/*.DesktopClient/ModelManifest.xml
    **/*.Server/GeneratedArtifacts
    **/*.Server/ModelManifest.xml
    _Pvt_Extensions
    
    # Paket dependency manager
    .paket/paket.exe
    paket-files/
    
    # FAKE - F# Make
    .fake/
    
    # CodeRush personal settings
    .cr/personal
    
    # Python Tools for Visual Studio (PTVS)
    *.pyc
    
    # Cake - Uncomment if you are using it
    # tools/**
    # !tools/packages.config
    
    # Tabs Studio
    *.tss
    
    # Telerik's JustMock configuration file
    *.jmconfig
    
    # BizTalk build output
    *.btp.cs
    *.btm.cs
    *.odx.cs
    *.xsd.cs
    
    # OpenCover UI analysis results
    OpenCover/
    
    # Azure Stream Analytics local run output
    ASALocalRun/
    
    # MSBuild Binary and Structured Log
    *.binlog
    
    # NVidia Nsight GPU debugger configuration file
    *.nvuser
    
    # MFractors (Xamarin productivity tool) working folder
    .mfractor/
    
    # Local History for Visual Studio
    .localhistory/
    
    # BeatPulse healthcheck temp database
    healthchecksdb
    
    # Backup folder for Package Reference Convert tool in Visual Studio 2017
    MigrationBackup/
    
    # Ionide (cross platform F# VS Code tools) working folder
    .ionide/
    
    # Fody - auto-generated XML schema
    FodyWeavers.xsd
    
    # VS Code files for those working on multiple tools
    
    # Local History for Visual Studio Code
    
    # Windows Installer files from build outputs
    *.cab
    *.msi
    *.msix
    *.msm
    *.msp
    
    # JetBrains Rider
    .idea/
    *.sln.iml
    
    ### VisualStudio Patch ###
    # Additional files built by Visual Studio
    
    # End of <https://www.toptal.com/developers/gitignore/api/python,pycharm,visualstudio,visualstudiocode,vim,macos,zsh,linux>
    #
    #
    my_settings.py
    
    schema.sql

    2. .env

    DATABASE_URL = YOUR DB URL
    
    PORT = YOUR PORT NUMBER
    
    TYPEORM_CONNECTION = DB TYPE
    TYPEORM_HOST = HOST NUMBER HERE
    TYPEORM_USERNAME = ROOT OR USERNAME
    TYPEORM_PASSWORD = DB PASSWORD
    TYPEORM_DATABASE = YOUR DB
    TYPEORM_PORT = DB PORT
    TYPEORM_LOGGING = TRUE
    
    S3_ACCESS_KEY_ID = YOUR ACCESS KEY ID
    S3_SECRET_ACCESS_KEY = YOUR SECRET ACCESS KEY
    
    REDIS_HOST = REDIS HOST NUMBER HERE
    REDIS_PORT = REDIS PORT
    REDIS_USERNAME = REDIS USER NAME
    REDIS_PASSWORD = REDIS PASSWORD
    
    etc...
    

    댓글