/@devcomfort-text-transcoder-v0.2-업데이트/thumbnail.png

@devcomfort/text-transcoder v0.2.0 업데이트 정리

프로젝트 소개

지난해 6월, 프로젝트를 수행하던 중 MIDI 파일에서 가져온 텍스트의 인코딩에 문제가 발생하여 수정해야 하는 상황에 처했습니다. 여러 프로젝트를 검토했지만 아래와 같은 문제가 있었습니다.

  • 표준 TextEncoder, TextDecoder 구현체: 당시 필요한 windows-1252euc-kr 인코딩 지원하지 않음
  • iconv-liteiconv: ESM 문법을 지원하지 않는 프로젝트 기반

더 많은 검색 끝에 표준 TextEncoder, TextDecoder 구현체를 개선한 text-decoding 프로젝트를 발견했습니다. 이를 바탕으로 @devcomfort/text-transcoder 라이브러리의 첫 번째 버전을 작성했습니다.

프로젝트 소개

@devcomfort/text-trasncoder 라이브러리는 서로 다른 인코딩 형식의 텍스트를 쉽게 변환할 수 있는 reEncode 함수를 지원합니다.

v0.1 → v0.2 업데이트사항

현재 날짜인 2023년 6월 30일 기준으로, @devcomfort/text-transcoder 라이브러리 버전은 v0.1.14로, alamode를 사용하여 CJS/ESM 다중 문법을 지원하며, Jest를 통해 기본 테스트를 제공합니다.

v0.2에서는 불완전한 타입 지원, 느린 Jest 테스트 속도와 같은 v0.1의 문제를 해결하고자 TypeScript를 도입하여 다음 업데이트를 진행했습니다.

  1. TypeScript 도입 및 설정으로 ESM/CJS 트랜스파일 기능 추가
  2. Ava 테스트 도구 사용하여 다양하고 빠른 테스트 지원 강화
  3. 원본 프로젝트인 text-decoding의 타입 힌트 추가로 타입 힌트 지원 개선
  4. GitHub Actions을 사용한 npm package 배포 파이프라인 구축

설치

bash
# npm 사용 시
npm i @devcomfort/text-transcoder
bash
# yarn 사용 시
yarn add @devcomfort/text-transcoder
bash
# pnpm 사용 시
pnpm i @devcomfort/text-transcoder

사용 예시

이 프로젝트를 처음 볼 사람들을 위해 다음과 같이 사용할 수 있습니다.

ts
// CJS 문법
const reEncode = require('@devcomfort/text-transcoder')
console.log(reEncode('A', 'utf-8', 'utf-8')) // A
ts
// ESM 문법
import {reEncode} from '@devcomfort/text-transcoder';
console.log("reEncode("ÀÚ", "windows-1252", "euc-kr")"); // 자