본문 바로가기

JS를 대하는 자세

Bun을 통해 Build 시간 단축 도전기

반응형

NestJS 프로젝트에 Bun을 적용하여 빌드 시간 단축을 시도하였습니다. 

 

로컬 개발 환경인 M1 PRO MAX에서 진행하였습니다. 

 

 

Bun 적용 옵션 1

"sourceMap": false,
"skipLibCheck": false,

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": false,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": false,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false,
    "types": [
      "node"
    ],
    "plugins": [
      {
        "name": "Bun"
      }
    ]
  }
}

결과1 

* 야심치가 준비한 이 옵션이 가장 오래 걸려서 충격! Bard와 협업해서 완성 된 옵션인데 결과가 충격

% yarn build                                                                            
yarn run v1.22.17
$ nest build
✨  Done in 8.98s.

Bard 협업 내용 

기존 옵션

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false
  }
}

결과2

yarn build 
yarn run v1.22.17
$ nest build
✨  Done in 6.15s.

Bun 적용 옵션2

"sourceMap": true,
"skipLibCheck": true,

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false,

    "types": [
      "node"
    ],
    "plugins": [
      {
        "name": "Bun"
      }
    ]
  }
}

결과3

% yarn build 
yarn run v1.22.17
$ nest build
✨  Done in 5.91s.

 

개발 환경에서 Bun 적용이 아주 미묘하게 꾸준히 빠르긴 하였지만 드라마틱한 결과는 아니었습니다. 다만 좀 특이한건 Bard를 통하여

옵션에 변경을 준 경우 가장 늦었다는게... ㅜㅜ

이 부분 OpenAI, Bard, Phind.com을 통해 다시 하번 다뤄보도록 하겠습니다. 

 

2부에서는 운영환경에서 어떤 결과가 있는지 보도록 하겠습니다. 

반응형

'JS를 대하는 자세' 카테고리의 다른 글

[mongodb] or 조건  (0) 2021.11.29