URL 단축기 만들기 - 8. swc 사용하기

URL 단축기 2022년 12월 15일

전에 @swc/jest 패키지를 이용해 테스트를 진행하려고 했었는데 오류가 나서 @swc-node/jest 패키지로 진행했었어요. 그런데 이번에 해결 방법을 찾아서 그 방법으로 진행해 볼게요.

일단 swc를 설치해 주세요.

yarn add --dev @swc/jest @swc/core

backend 폴더에 .swcrc 파일을 만들어 주세요. 혹시 다른 프로젝트에 사용하신다면 그에 맞게 수정해주시면 될것 같네요. 사실 이부분이 여기에서 가장 중요한 부분이에요. swc가 어떻게 작동해야 하는지 설정해주는 부분이니까요.

{
  "jsc": {
    "baseUrl": "./src",
    "paths": {
      "src/*": ["./*"]
    },
    "transform": {
      "decoratorMetadata": true
    },
    "target": "es2017",
    "parser": {
      "syntax": "typescript",
      "decorators": true
    }
  },
  "module": {
    "type": "commonjs"
  },
  "minify": false
}

일단 이렇게 swc 설정을 써줬어요. 전에 nestjs에서 오류가 발생했던 이유는 jsc.transform.decoratorMetadata 를 설정해주지 않아서였네요.

그럼 이제 jest 설정을 수정해 줄게요. package.json 을 수정해 주세요.

{
  "jest": {
    "transform": {
      "^.+\\.(t|j)s$": "@swc/jest"
    }
  }
}

이렇게 되면 jest 설정이 끝나네요! 여기까지만 하면 제목이 @swc/jest 사용하기였겠죠? 빌드 스크립트도 바꿔볼게요!

yarn add --dev @swc/cli

build 스크립트도 바꿔주세요.

yarn generate && swc src -d dist

이러면 (아마도) 정상적으로 작동할 거에요! 아마도요...

오늘도 소스코드 남겨놓고 도망갈게요 히히

GitHub - paringparing/url-shortener: something
something. Contribute to paringparing/url-shortener development by creating an account on GitHub.

+ 이 방법으로 테스트가 왜인지 잘 작동하지 않는걸 확인했어요. 여기서부터 해결 방법을 알려드릴게요.

일단 package.json에서 jest 부분을 삭제해주세요. jest.config.js 로 이동할 거에요.

jest.config.js를 이렇게 써주세요.

const { readFileSync } = require('fs')
const path = require('path')

const swcrc = JSON.parse(readFileSync(path.join(__dirname, '.swcrc'), 'utf8'))

module.exports = {
  moduleFileExtensions: ['js', 'json', 'ts'],
  rootDir: 'src',
  testRegex: '.*\\.spec\\.ts$',
  transform: {
    '^.+\\.(t|j)s$': ['@swc/jest', swcrc],
  },
  collectCoverageFrom: ['**/*.(t|j)s'],
  coverageDirectory: '../coverage',
  testEnvironment: 'node',
  moduleNameMapper: {
    '^src/(.*)$': '<rootDir>/$1',
    '(.*)\\.edgeql$': '$1.edgeql.ts',
  },
}

이러면 끝이에요! 아마도요..

태그

파링

바보