TypeScript 브라우저 테스팅 셋업

TypeScript 코드 브라우저 테스팅 셋업

TypeScript는 JavaScript로 컴파일되어 웹 브라우저나 NodeJS를 통해 실행된다. 아래는 간단한 TypeScript 프로젝트를 만들어 이를 웹 브라우저에서 실행하는 환경을 만드는 절차들이다.

  1. TypeScript 프로젝트 폴더를 생성하고, 하나의 TypeScript 파일 (app.ts)와 index.html 파일, 그리고 favicon 이미지(favicon.ico)를 생성한다.

    index.html 안에는 app.js 파일을 script로 로딩한다. defer를 사용하면 페이지 로딩이 끝난 후 js 스크립트를 실행한다.
            <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8" />
                <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                <title>Document</title>
                <script src="app.js" defer></script>
            </head>
            <body>
                <button>Test</button>
            </body>
            </html>
        
  2. 아래와 같이 tsc --init 을 사용하여 tsconfig.json 프로젝트 구성파일을 생성한다. 이 파일이 생성되면 현재 폴더가 TypeScript 프로젝트로 인식된다.
  3. "tsc" 명령을 실행하여 TypeScript 프로젝트를 컴파일한다. 이는 app.ts 를 컴파일하여 app.js를 생성한다.
            C:\myweb> tsc
        
  4. "npm init"을 사용하여 package.json을 생성한다. (패키지 관련 질문에는 그냥 Enter를 쳐도 된다)
            C:\myweb> npm init
        
  5. npm을 사용하여 Lightweight web server (node server)인 lite-server를 설치한다. lite-server는 간단한 웹서버로서 HTML이나 JavaScript가 변경되면 자동으로 웹페이지를 Refresh 하는 기능도 제공한다.
  6. package.json 파일의 "scripts" 섹션 안에 "start": "lite-server" 를 추가한다. 이는 "npm start" 명령을 수행하면 lite-server 를 실행하도록 한다.
  7. lite-server를 실행하도록 "npm start"를 실행한다. lite-server가 실행되면 간단한 웹서버를 Port 3000 (localhost:3000)에 실행하고, 이후 웹브라우저를 자동으로 띄우고 http://localhost:3000/ 으로 이동한다. 그리고, 이는 디폴트 웹페이지(index.html)를 보여주게 된다.
            C:\myweb> npm start
        
  8. 웹 브라우져에서 [F12]를 눌러 Developer Console을 띄우면 콘솔 출력(console.log())을 볼 수 있다.
  9. (Optional) TypeScript 소스코드가 변경되면 자동으로 JavaScript를 컴파일하도록 지정하기 위해 (VS Code에서 New Terminal을 추가하고) 아래와 같이 Watch 옵션을 사용할 수 있다. 이 Watch 옵션을 사용한 후, app.ts를 변경하면 자동으로 JavaScript(app.js)가 재컴파일되고, 이는 다시 lite-server에 의해 웹브라우저의 웹페이지(index.html)를 Refresh 하게 한다.
            C:\myweb> tsc --watch
        
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.