본 문서는 INI 라이브러리 ini 을 모듈화 하여 프로젝트와 의존하지 않은 코드를 작성하였습니다. 프로젝트의 오류와 반영된 코드 및 결과 값들을 파악하여 동작을 이해할 때 사용하기도 합니다. ini Parser를 사용하게 되면 환경설정 파일을 외부로 반출 시킬수 있기 때문에 환경설정 파일과 코드와의 의존성이 약해져서 더욱 좋은 코드가 작성될 수 있다는 점입니다. 환경설정을 변경하기 위해 코드를 고치는 것 보다 간단하게 ini 환경설정 파일을 고치는 것이 유용하다고 판단됩니다.
그러면 아래 예제를 통해 시작해보도록 하죠.
# Contents
- ini Install
- 예제 코드
# ini Install
해당 라이브러리를 이용하기 위해 우리는 2개의 라이브러리를 설치할 예정입니다.
- ini : ini로 구성된 파일의 저장 및 로드를 도와주는 실질적인 라이브러리 입니다.
- object-path : Object인 객체의 Key 를 이용하여 Value를 불러오거나 저장시키는 라이브러리입니다.
설치 방법은 아래와 같습니다.
npm install --save ini
npm install --save object-path
# 예제 코드
ini 설치가 완료되었으면 아래 정리된 모듈을 복붙해주세요. 해당 모듈을 사용하게 되면 어떠한 의존성 없이 로그를 출력 및 저장할 수 있으며, 사용법도 아주 간단합니다.
저는 로그 모듈 파일을 config.js로 만들었습니다. 그리고 아래 내용을 복붙하였습니다.
const ini = require("ini");
const objectPath = require("object-path");
const fs = require("fs").promises;
class Config {
constructor(filePath) {
this.data = {};
this.filePath = filePath;
}
get(configPath) {
return objectPath.get(this.data, configPath);
}
set(configPath, value) {
objectPath.set(this.data, configPath, value);
}
async load() {
this.data = ini.decode(await fs.readFile(this.filePath, "utf8"));
}
async save() {
await fs.writeFile(this.filePath, ini.decode(this.data));
}
}
module.exports = Config;
실질적인 사용은 아래와 같습니다. Config 생성자를 만들 때 ini 파일을 로드함으로써 파일의 값을 읽어와 객체로 변환시켜줍니다. 그 객체를 통해 값을 읽어오거나 값을 넣는 작업을 할 수 있습니다.
const Config = require("./config");
async function main() {
var config = new Config("./conf/server.ini");
await config.load();
console.log(config.get("mysql.host"));
}
main();
'오픈소스 > 노드' 카테고리의 다른 글
[Node] 04. 콜백을 사용한 비동기 제어 흐름 패턴 (0) | 2021.10.06 |
---|---|
[Node] 03. 콜백과 이벤트 (0) | 2021.10.05 |
[Node] Logging 라이브러리 winston (0) | 2021.10.05 |
[Node] 02. 모듈 시스템 (0) | 2021.09.23 |
[Node] 01. Node.js 플랫폼 (0) | 2021.09.16 |