[typescript] 타입스크립트와 Rollup을 함께 사용하여 번들 사이즈 최소화하기

타입스크립트(TypeScript)는 정적 타입을 지원하는 JavaScript의 상위 집합 언어입니다. Rollup은 ES6 모듈 번들러로, 소스 코드를 하나의 파일로 번들링하여 브라우저에서 실행될 수 있도록 도와줍니다. 이 포스트에서는 타입스크립트와 Rollup을 함께 사용하여 번들 사이즈를 최소화하는 방법에 대해 알아보겠습니다.

1. 타입스크립트와 Rollup 설정하기

운영 환경에서 번들 사이즈를 최소화하기 위해 우리는 tsconfig.json 파일에 다음과 같이 "target": "ES2020""module": "ESNext"를 설정해야 합니다.

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "outDir": "dist",
    // 다른 옵션들...
  },
  // 다른 설정들...
}

또한, Rollup 설정 파일(rollup.config.js)에서 @rollup/plugin-typescript 플러그인을 사용하여 타입스크립트 파일을 트랜스파일하고 번들링해야 합니다.

import typescript from '@rollup/plugin-typescript';

export default {
  input: 'src/index.ts',
  output: {
    file: 'dist/bundle.js',
    format: 'es'
  },
  plugins: [
    typescript()
  ]
};

2. 데드 코드 제거하기

Rollup은 자체적으로 데드 코드(eliminate dead code) 제거를 지원합니다. 이를 통해 사용되지 않는 코드를 번들에 포함시키지 않아 번들 사이즈를 줄일 수 있습니다.

import { commonjs } from '@rollup/plugin-commonjs';
import { terser } from 'rollup-plugin-terser';

export default {
  input: 'src/index.ts',
  output: {
    file: 'dist/bundle.js',
    format: 'es',
  },
  plugins: [
    typescript(),
    commonjs(),
    terser()
  ]
};

rollup-plugin-terser 플러그인을 사용하여 번들된 코드를 압축하고 난독화하여 번들 사이즈를 더욱 최소화할 수 있습니다.

3. 외부 종속성 관리하기

타입스크립트와 Rollup을 함께 사용할 때, 외부 종속성에 대한 타입 정의가 필요할 수 있습니다. @rollup/plugin-node-resolve 플러그인을 사용하여 외부 종속성을 해결하고 번들링할 수 있습니다.

import resolve from '@rollup/plugin-node-resolve';

export default {
  input: 'src/index.ts',
  output: {
    file: 'dist/bundle.js',
    format: 'es',
  },
  plugins: [
    typescript(),
    resolve()
  ]
};

결론

타입스크립트와 Rollup을 함께 사용하여 번들 사이즈를 최소화할 수 있습니다. 적절한 설정과 플러그인을 이용하여 코드를 효율적으로 번들링하고 최적화하여 우리의 웹 애플리케이션을 더 가벼워지게 만들어보세요.

참고 문헌: