본문 바로가기

TypeScript/실험실

[TypeScript] Webpack 환경에서 TypeScript 사용하기

들어가며

이 글은 Webpack을 사용해서 JavaScript를 기본적으로 구성한 이후라고 판단하여 작성합니다. 

 

필요 패키지 다운로드 

npm install --save-dev typescript @babel/preset-typescript

필요한 패키지는 타입스크립트를 사용하기 위한 typescript와

babel에서 읽기 위한 @babel/preset-typescript이다. 

 

초기 설정

먼저 프로젝트에서 사용할 tsconfig를 추가한다. 

./node_modules/typescript/bin/tsc --init

 

몇가지 옵션을 적어보자면, 

target 옵션 : 타입스크립트 파일을 어떤 버전의 자바스크립트로 변경할지 지정

                     es5로 세팅하면 es5 버전의 자바스크립트로 컴파일해준다. 

module 옵션 : 자바스크립트 파일간 import 문법을 구현할 때 어떤 문법을 쓸지 정한다. 

                       es6는 import 문법을 사용한다. commonjs는 require 문법을 사용한다. 

noImplicitAny 옵션 : any라는 타입이 의도치않게 발생하는 경우 에러를 띄워주는 옵션이다. 

strictNullChecks 옵션 : null, undefined 타입에 이상한 조작을 할 경우 에러를 띄우는 옵션 

allowJs : js 파일들을 ts에 import할 수 있는지 설정하는 옵션outDir : js 파일 아웃풋 경로 설정 

 

이제 바벨에 타입스크립트를 추가해준다. 

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": "> 0.25%, not dead",
        "useBuiltIns": "usage",
        "corejs": 3
      },
      "@babel/preset-typescript"
    ]
  ],

  // ...
}

@babel/preset-env 등 내용은 기존에 가지고 있던 설정이고, "@babe/preset-typescript"를 추가한다.

 

다음으로 webpack.config.js를 수정한다. 

const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  mode: "development",
  devtool: "source-map",
  entry: "./src/typescripts/main.ts",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "../server/public"),
  },
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: "babel-loader",
        exclude: /node_modules/,
      },
      {
        test: /\.scss$/i,
        use: [
          MiniCssExtractPlugin.loader,
          { loader: "css-loader", options: { url: false } },
          "sass-loader",
        ],
      },
    ],
  },

  // ...
};

다른 설정은 굳이 신경 쓸 필요는 없고, entry 부분에서의 ts 경로

그리고 rules의 test 부분을 .ts로 설정한다. 

반응형

'TypeScript > 실험실' 카테고리의 다른 글

타입스크립트 keyof, Record  (1) 2024.09.11