TypeScript) tsconfig.json 설정 및 자동화

송민경's avatar
Sep 13, 2024
TypeScript) tsconfig.json 설정 및 자동화

1. npm run build 명령어 설정하기

npm run build
//TS 파일 위치 알려주기 { "include": ["src"], // src의 모든 파일 확인하기 "compilerOptions": { "outDir": "build" // JS 파일이 생설될 폴더 지정 } }
  • package.json에 scripts 수정하기
{ "name": "typechain", "version": "1.0.0", "scripts": { "build": "tsc" }, "keywords": [], "author": "", "license": "ISC", "description": "", "devDependencies": { "typescript": "^5.6.2" } }
  • build 폴더 내의 index.js 파일 확인하기
  • TS의 파일이 JS로 변환되어있음
    • TS 파일
    • const hello = () => "hi";
    • JS 파일
      • TS가 자신의 코드를 컴파일해서 낮은 버전의 JS로 바꿔준 것
        • notion image
        • 버전 설정
          • ES3: const가 없고 var가 존재
            • //TS 파일 위치 알려주기 { "include": ["src"], // src의 모든 파일 확인하기 "compilerOptions": { "outDir": "build", // JS 파일이 생설될 폴더 지정 "target": "ES3" // TS가 바꿔줄 JS의 버전 } }
          • ES6 : const, 화살표 함수가 존재
            • //TS 파일 위치 알려주기 { "include": ["src"], // src의 모든 파일 확인하기 "compilerOptions": { "outDir": "build", // JS 파일이 생설될 폴더 지정 "target": "ES6" // TS가 바꿔줄 JS의 버전 } }
              notion image
 
  • ES3 설정 후 확인하기
class Block { constructor(private data: string) {} static hello() { return "hi"; } }
notion image
 

2. lib

  • ES6 : ES6를 지원하는 환경
  • DOM : 브라우저 위에서 실행
//TS 파일 위치 알려주기 { "include": ["src"], // src의 모든 파일 확인하기 "compilerOptions": { "outDir": "build", // JS 파일이 생설될 폴더 지정 "target": "ES6", // TS가 바꿔줄 JS의 버전 "lib": ["ES6", "DOM"] // JS가 어디에서 동작할지 설정 } }
  • TS가 브라우저의 API와 타입들을 알고 있어서 자동 완성을 제공함
notion image
  • ctrl + 클릭
notion image
파일이름 : lib.dom.d.ts
notion image
 

3. 타입 정의를 써야하는 이유

패키지나 라이브러리, 프레임워크는 JS로 만들어져있음
그것을 TS 프로젝트에 사용하기 위해서 타입 정의로 알려줘야 함
  • src내에 myPackage.js 만들기
export function init(config) { return true; } export function init(code) { return code+1; }
  • index.ts에서 사용해보기
import {init} from "myPackage";
notion image
{ "include": ["src", "src/.myPackage.js"], "compilerOptions": { "outDir": "build", "target": "ES6", "lib": ["ES6", "DOM"], "strict": true, // 매우 보호해줌 } }
 

4. JS 허용하기

  • myPackage.d.ts 삭제하기
{ "include": ["src", "src/.myPackage.js"], "compilerOptions": { "outDir": "build", "target": "ES6", "lib": ["ES6", "DOM"], "strict": true, // 매우 보호해줌 "allowJs": true, // TS안에 JS 허용 } }
  • JS 허용됨
import { init, exit } from "./myPackage";
notion image
notion image
 

5. JS Doc

  • 코멘트로 이루어진 문법
  • JS 허용하고 함수 바로위에 코멘트 달아주기
  • TS가 코멘트를 읽고 타입을 확인해줌
//@ts-check /** * @param {object} config * @param {boolean} config.debug * @param {string} config.url * @returns {void} */ export function init(config) { return true; } export function exit(code) { return code + 1; }
notion image
//@ts-check /** * @param {object} config * @param {boolean} config.debug * @param {string} config.url * @returns {Boolean} */ export function init(config) { return true; } /** * @param {number} code * @returns {number} */ export function exit(code) { return code + 1; }
notion image
 

6. package.json에 설정 추가하기

  • Node.js로 build/index/js 실행 설정
{ "name": "typechain", "version": "1.0.0", "scripts": { "build": "tsc", "start": "node build/index.js" }, "keywords": [], "author": "", "license": "ISC", "description": "", "devDependencies": { "typescript": "^5.6.2" } }
  • 필요 없는 파일 삭제
notion image
 

7. 실행하기

  • Windows나 PowerShell에서 사용하는 방식
  •  ; 
    • 두 명령을 순서대로 실행하지만, 첫 번째 명령의 성공 여부에 관계없이 두 번째 명령이 실행
    • npm run build; npm start
  • and 
    • 첫 번째 명령이 성공한 경우에만 두 번째 명령이 실행
    • npm run build -and npm start
  • 별도의 명령 실행
    • 각 명령을 개별적으로 실행
    • npm run build npm start
  • Linux나 macOS의 Bash 셸에서 사용하는 방식
  • && 
    • 첫 번째 명령이 성공적으로 실행된 경우에만 두 번째 명령이 실행
    • npm run build && npm start
  • TS 코드 → build/index.js 파일 생성 → node build/index.js 실행 : 비효율적
    • notion image
 

8. ts-node 설치하기

  • 개발 환경에서만 사용이 가능함
  • build 없이 TS 실행 가능함 = 컴파일 안하고 TS 코드를 대신 실행해줌
  • build없이 빠르게 새로고침이 가능함
npm i -D ts-node
notion image
 

9. dev 설정 추가하기

{ "name": "typechain", "version": "1.0.0", "scripts": { "build": "tsc", "dev" : "ts-node src/index.js", "start": "node build/index.js" }, "keywords": [], "author": "", "license": "ISC", "description": "", "devDependencies": { "ts-node": "^10.9.2", "typescript": "^5.6.2" } }
 

10. nodemon 설치하기

  • 자동으로 커맨드를 재실행 해줌
  • 서버를 재시작할 필요가 없음
npm i nodemon
notion image
  • package.json에 nodemon 설정 추가하기
{ "name": "typechain", "version": "1.0.0", "scripts": { "build": "tsc", "dev" : "nodemon --exec ts-node src/index.ts", "start": "node build/index.js" }, "keywords": [], "author": "", "license": "ISC", "description": "", "devDependencies": { "ts-node": "^10.9.2", "typescript": "^5.6.2" } }
  • dev로 실행하기
npm run dev
  • 이 에러가 뜨면 비교하고 수정해도 의미 없고 그냥 덮어쓰면 해결됨!
notion image
notion image
  • 수정하고 저장하면 자동 실행
console.log("bye");
notion image
Share article

vosw1