...
자바스크립트에서 YAML 사용하기
만일 노드 프로젝트에서 yaml 파일로 구성된 설정 데이터들을 가져와 읽으려면 어떻게 해야 할까?
결론 부터 말하자면, 자바스크립트 언어 자체에서는 xml이나 json 밖에 지원하지 않으니, yaml을 json으로 변환하여 사용하여야 한다.
대표적으로 직접 온라인 툴로 yaml → json으로 변환 시키고 사용하거나, 노드 패키지를 사용하여 한번에 yaml 파일을 읽어와 사용하는 두가지 방법이 있다.
온라인 변환 툴 사용
어렵게 생각할 필요없이, yaml 데이터를 직접 json으로 변환한뒤, json 파일로 저장하고 파일 디스크립터로 읽어 오면 된다.
다만 프로젝트 인원이 설정파일을 계속 yaml로 관리한다고 가정한다면, 버전업이 있을때마다 일일히 변환하여 사용하는 것은 아무래도 한계가 있다.
노드 패키지 사용
직접 yaml 파일을 읽어와 바로 자바스크립트 객체로 변환시켜주는 노드 패키지가 존재한다.
node-yaml, yamljs, js-yaml 등 많은 패키지들이 존재하지만, 가장 다운로드 수가 많은 js-yaml 패키지를 소개해 본다.
> npm install js-yaml
yaml 파싱하기
다음과 같은 yaml 데이터가 있다고 가정하자. (파일명은 test.yaml 로 지정한다)
name: 돌준이네 치킨
location: 닭볶로 12번길
# 가게 주인 정보
owner:
name: 장돌준
age: 44
major: 컴퓨터공학
career:
- 앱 개발자
- 풀스택 개발자
- SI 개발자
menus:
- name: 자바치킨
price: 18000
ingredients:
- 닭
- 튀김가루
- 자바소스
- name: 깃윙
price: 6500
ingredients:
- 닭날개
- 문어다리
- name: 스프링소다
price: 2000
ingredients:
- 물
- 설탕
- 메탄가스
reviews:
- reviewer:
name: 배다른민족
level: Beginner
rating: '1'
comment: 아니 음료수 뭐냐고
- reviewer:
name: 김밥순
level: VIP
rating: '5'
comment: 개발팀장님 힘내세요. 많이 시켜먹을게요.
이를 js-yaml 모듈을 사용하여, 자바스크립트 소스에서 중간 변환 단계 없이 바로 읽어와 자바스크립트 객체로 간단히 변환이 가능하다.
const yaml = require('js-yaml');
const fs = require('fs');
try {
// yaml 데이터를 자바스크립트 객체로 바로 변환한다.
const doc = yaml.load(fs.readFileSync('./test.yaml', 'utf8'));
console.info(doc);
} catch (e) {
console.log(e);
}
이렇게 곧바로 소스단에서 yaml 데이터를 사용할 수 있으니, 유지보수 면에서도 문제가 없어졌다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.