프로젝트 소개
지난해 6월, 프로젝트를 수행하던 중 MIDI
파일에서 가져온 텍스트의 인코딩에 문제가 발생하여 수정해야 하는 상황에 처했습니다.
여러 프로젝트를 검토했지만 아래와 같은 문제가 있었습니다.
- 표준
TextEncoder
,TextDecoder
구현체: 당시 필요한windows-1252
→euc-kr
인코딩 지원하지 않음 iconv-lite
및iconv
: 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를 도입하여 다음 업데이트를 진행했습니다.
- TypeScript 도입 및 설정으로 ESM/CJS 트랜스파일 기능 추가
- Ava 테스트 도구 사용하여 다양하고 빠른 테스트 지원 강화
- 원본 프로젝트인
text-decoding
의 타입 힌트 추가로 타입 힌트 지원 개선 - 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")"); // 자