이전 프로젝트에서 겪었던 특이사항을 기록하려고 한다.
노드환경에서는 빌드가 안되네?
이전 진행했던 프로젝트에서 Git Action을 통해 CI/CD를 수행했다. Git Action의 workflow를 통해 프로젝트를 빌드를 했는데 도중 에러가 발생했다. workflow 실행 중 스크립트에 적었던 `npm run build`에서 에러가 발생했다. 그래서 해당 에러 로그를 시작으로 빌드를 성공할 때까지 리서치하며 tsconfig.node.json의 속성을 하나 하나 바꿨다. 에러가 꼬리에 꼬리를 무는 형식으로 나와서 이에 관련해서 백지인 상태에서도 잘 따라갈 수 있었다.
최종 tsconfig.node.json은 아래와 같다.
{
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"target": "ES2022",
"lib": ["ES2023", "WebWorker"],
"module": "ESNext",
"skipLibCheck": true,
"composite": true,
"noEmit": false,
/* Bundler mode */
"moduleResolution": "Bundler",
"allowImportingTsExtensions": false,
"isolatedModules": true,
"moduleDetection": "force",
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
},
"types": ["node"],
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["vite.config.ts"]
}
- `"skipLibCheck": true` : 라이브러리 파일의 타입 검사를 건너뜀
- `"composite": true` : 빌드 정보를 tsBuildInfoFile에 저장하여 이후 빌드 시 변경된 파일만 다시 컴파일
- `"noEmit": false` : Node 환경에서는 빌드 산출물이 필요하므로 해당 속성이 필요
추가적으로 함께 사용했던 CI workflow는 다음과 같다.
name: CI
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: 노드 설치
uses: actions/setup-node@v3
with:
node-version: 20
- name: 노드모듈스 캐싱
uses: actions/cache@v3
id: cache
with:
path: '\*\*/node\_modules'
key: ${{ runner.os }}-node-${{ hashFiles('\*\*/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: .env 생성
run: |
echo "VITE\_BASE\_URL=${{ secrets.VITE\_BASE\_URL }}" >> .env
- name: 아직은 의존성 매번 새로 설치
run: npm ci
- name: 린트
run: npm run lint
- name: 빌드
run: npm run build
'Frontend > Typescript' 카테고리의 다른 글
[Typescript] map() 관련 번들 사이즈 줄이기 (0) | 2024.07.07 |
---|